Мне нужно изменить свой, .htaccessи есть две строки, которые я не понимаю.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Когда мне следует использовать эти строки?
Мне нужно изменить свой, .htaccessи есть две строки, которые я не понимаю.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Когда мне следует использовать эти строки?
Ответы:
Не то место, чтобы давать полное руководство, но вот оно вкратце;
RewriteCond в основном означает «выполнить следующее RewriteRule, только если это правда». !-lПуть является условием , что запрос не для ссылки ( !средства нет, -lзначит ссылка)
RewriteRule в основном означает , что , если запрос сделан , что матчи ^(.+)$(соответствует любому URL , кроме корня сервера), то он будет переписан , как index.php?url=$1это означает , запрос olleбудет переписать в виде index.php?url=olle).
QSAозначает, что если с исходным URL-адресом передана строка запроса, она будет добавлена к перезаписываемому ( olle?p=1будет переписана как index.php?url=olle&p=1.
L означает, что если правило совпадает, больше не обрабатывать RewriteRules ниже этого.
Для получения более полной информации об этом перейдите по ссылкам выше. Поддержка перезаписи может быть немного трудной для понимания, но есть довольно много примеров по stackoverflow, на которых можно поучиться.
?на &, что делает его невозможно различить /page&foobarпротив /page?foobar. Как я могу остановить замену QSA ?на &?
QSAрасшифровывается как Query String Append; Lозначает последнее (означает выполнить и прекратить искать следующее совпадение)
Если выполняются следующие условия, перепишите URL:
Если запрошенное имя файла не является каталогом,
RewriteCond %{REQUEST_FILENAME} !-d
и если запрошенное имя файла не является обычным файлом, который существует,
RewriteCond %{REQUEST_FILENAME} !-f
и если запрошенное имя файла не является символической ссылкой,
RewriteCond %{REQUEST_FILENAME} !-l
затем перепишите URL-адрес следующим образом:
возьмите полное имя файла запроса и укажите его в качестве значения параметра запроса «url» в index.php. Добавьте любую строку запроса из исходного URL-адреса в качестве дополнительных параметров запроса (QSA) и прекратите обработку этого файла .htaccess (L).
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Другой пример:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
С флагом [QSA] запрос на
/ pages / 123? один = два
будет отображаться на
/page.php?page=123&one=two