Кто-нибудь может подумать, когда перезапись подзапроса полезна? - PullRequest
4 голосов
/ 04 марта 2012

Я обнаружил, что одна из главных причин, заставляющих .htaccess переписывать наборы правил делать, казалось бы, странные вещи, - это когда Apache решает попытаться применить их внутри подзапроса.Это в той степени, в которой я теперь всегда использую флаг [NS] в своих правилах или использую правило префикса

RewriteCond %{IS_SUBREQ}%{ENV:END} t|1             [NC]
RewriteRule ^                      -               [L]

(Бит% {ENV: END} позволяет мне использовать E = END:1, чтобы сделать то же самое, что и флаг V2.4 END.)

Мой вопрос: Может кто-нибудь дать мне хороший пример использования, где я бы не хотел этого делать? (илив качестве альтернативы, где я хотел бы использовать специальные -U или -F шаблоны условий).

Я понимаю, что может быть много, о которых я не задумывался, но галочка А переходит к первому действительному.

1 Ответ

2 голосов
/ 04 марта 2012

Я предполагаю, что типичные ситуации, когда вы хотите применить правила перезаписи к подзапросам, более или менее совпадают с теми, в которых вы используете символические ссылки внутри корня документа.

Для правдоподобногоНапример, предположим, что вы используете серверные включения, и у вас есть куча файлов с суффиксами, такими как .html, .shtml и .htm, и, возможно, некоторые из них в верхнем регистре.В какой-то момент вы решаете стандартизировать суффикс .html и соответственно переименовать все свои файлы.Но у вас все еще есть куча унаследованного кода и ссылок, использующих другие суффиксы, и их полное удаление займет некоторое время.

В этом случае вам может потребоваться правило переписывания, например:

RewriteRule ^(.*)\.s?html?$ $1.html [NC]

Применяя это также к подзапросам, вы гарантируете, что ваши серверные включения не сломаются из-за переименования.

...