Что означают эти объявления в моем файле .htaccess?
-
03-07-2019 - |
Вопрос
Я новичок в PHP.Кто-нибудь может сказать мне, что здесь делает каждая строка.Нужно ли мне это?Это выдает мне ошибки
RewriteCond %{REQUEST_URI} /~([^/]+)/?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /~%1/rewrite.php?p=$1&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_URI} /~([^/]+)/?
RewriteRule ^index\.php?(.*)$ /~%1/rewrite.php?p=%1&%{QUERY_STRING} [L]
#there is no ~ character in the URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) ./rewrite.php?p=$1&%{QUERY_STRING} [L]
RewriteRule ^index\.php?(.*)$ ./rewrite.php?p=$1&%{QUERY_STRING} [L]
#WJ-180 fix
RewriteRule ^resume\.php?(.*)$ ./rewrite.php?p=resume\.php$1&%{QUERY_STRING} [L]
Решение
Простой ответ:Эти объявления переписывают каждый запрос в rewrite.php
файл.
Более полный ответ:Тот Самый RewriteCond
и RewriteRule
директивы исходят от Модуль Apache mod_rewrite и предоставить механизм перезаписи URL-адресов на основе правил.
Похоже, что эти правила предназначены для того, чтобы переписывать каждый запрос в rewrite.php
файл, либо в определенном каталоге (/~
фубар/rewrite.php
) или в корне (/rewrite.php
).
Другие советы
Если вы новичок, пожалуйста, прочтите http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html, это объясняется очень красиво.
p.s. Ваш заголовок "Что означают эти объявления в моем файле PHP .htaccess?" неверен, .htacces - это не файл php.
В них говорится
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
"Используйте следующее правило только в том случае, если запрос не соответствует существующему файлу или каталогу".
Это и mod_rewrite записи конфигурации.
Это правило Apache mod_rewrite.Если вы не используете какой-то фреймворк, вам, вероятно, он не нужен.Смотрите Apache mod_rewrite для получения дополнительной информации.