Что такое L в [QSA, L] в htaccess
QSA означает, что если строка запроса прошла с исходным URL-адресом, он будет добавлен к переписанию (olle? p = 1 будет переписан как Index.php? URL = олл &ы;. Р = 1
L означает, что если правило совпадает, не обрабатывайте больше RewriteRules ниже этот.
Привет, какие простые примеры объясняют использование L?
Я не могу понять это объяснение выше. Любая помощь будет высоко оценена.
Благодарю.
Ответы
Ответ 1
Флаг QSA
означает добавление существующей строки запроса после перезаписывания URI. Пример:
URL = http://example.com/foo/bar?q=blah
Правило:
RewriteRule ^foo/(.*)$ /index.php?b=$1
Результат = /index.php?b=bar
Обратите внимание на то, что q=blah
отсутствует. Поскольку существующая строка запроса отбрасывается в пользу той, которая указана в целевом правиле, (b = $1). Теперь, если вы включили флаг QSA
:
RewriteRule ^foo/(.*)$ /index.php?b=$1 [QSA]
Результат становится = /index.php?b=bar&q=blah
Флаг L
просто означает прекратить применение каких-либо правил. Учитывая тот же URL-адрес, http://example.com/foo/bar?q=blah
и заданные правила:
RewriteRule ^foo -
RewriteCond %{REQUEST_URI} !^/bar.php
RewriteRule ^(.*)$ /bar.php?z=$1
Первое правило применяется, и URI передается без изменений (через целевой объект -
). Затем механизм перезаписи обрабатывает следующее правило, и URI переписывается на /bar.php?z=foo/bar
. Что происходит, когда вы добавляете L
в конец:
RewriteRule ^foo - [L]
RewriteCond %{REQUEST_URI} !^/bar.php
RewriteRule ^(.*)$ /bar.php?z=$1
URL http://example.com/foo/bar
передается без изменений из первого правила, а затем останавливается из-за флага L
. Если URL-адрес http://example.com/something/else
, то первое правило не соответствует, а второе правило применяется, переписывая URI на: /bar.php?z=something/else
Обратите внимание, что, поскольку механизм перезаписи проходит все правила до тех пор, пока URI не перестанет меняться, флаг L
не будет препятствовать циклу, только любые дополнительные правила будут применяться в текущей итерации.
Ответ 2
.htaccess список флагов
- C (прикомандировано следующим правилом)
- CO = cookie (указать указанный cookie)
- E = var: значение (установить переменную среды var в значение)
- F (запрещено - отправляет пользователю 403 заголовок)
- G (ушел - больше не существует)
- H = обработчик (задатчик)
- L (правила обработки последней остановки)
Последнее правило: указывает серверу прекратить переписывание после обработки предыдущей директивы.
- N (далее - правила продолжения обработки)
- NC (без учета регистра)
- NE (не удаляйте специальные URL-символы на выходе)
- NS (игнорировать это правило, если запрос является подзапросом)
- P (прокси - то есть apache должен захватить удаленный контент, указанный в разделе подстановки, и вернуть его)
- PT (сквозной доступ - используется при обработке URL-адресов с дополнительными обработчиками, например, mod_alias)
- R (временное перенаправление на новый URL)
- R = 301 (постоянное перенаправление на новый URL)
- QSA (добавить строку запроса из запроса на замещенный URL)
- S = x (пропустить следующие правила x)
- T = mime-type (тип заданного типа mime)
Флаги добавляются в конец правила перезаписи, чтобы сообщить Apache, как интерпретировать и обрабатывать правило. Они могут использоваться, чтобы сообщить apache рассматривать правило как нечувствительное к регистру, прекратить обработку правил, если текущий соответствует, или множество других параметров. Они разделены запятой и заключены в квадратные скобки.