Что такое L в [QSA, L] в htaccess

QSA означает, что если строка запроса прошла с исходным URL-адресом, он будет добавлен к переписанию (olle? p = 1 будет переписан как Index.php? URL = олл &ampы;. Р = 1

L означает, что если правило совпадает, не обрабатывайте больше RewriteRules ниже этот.

Привет, какие простые примеры объясняют использование L? Я не могу понять это объяснение выше. Любая помощь будет высоко оценена. Благодарю.

+32
источник поделиться
2 ответа

Флаг 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 не будет препятствовать циклу, только любые дополнительные правила будут применяться в текущей итерации.

+53
источник

.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 рассматривать правило как нечувствительное к регистру, прекратить обработку правил, если текущий соответствует, или множество других параметров. Они разделены запятой и заключены в квадратные скобки.

+32
источник

Посмотрите другие вопросы по метке или Задайте вопрос