.htaccess – 有人会想到子请求重写何时有用吗?

我发现导致.htaccess重写规则集的主要原因之一就是做出看似奇怪的事情,那就是当Apache决定尝试在子请求中应用它们时.这是我现在总是在我的规则上使用[NS]标志或使用前缀规则的程度

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

(%{ENV:END}位只允许我使用E = END:1来执行与V2.4 END标志相同的操作.)

我的问题是:任何人都可以给我一个很好的用例,我不想这样做吗? (或者我希望使用特殊的-U或-F条件模式).

我意识到可能有许多我没有想到的,但是A勾号是第一个有效的.

最佳答案 我猜你想要将重写规则应用于子请求的典型情况与你在文档根目录中使用符号链接的情况大致相同.

对于一个看似合理的例子,假设您正在使用服务器端包含,并且有一堆文件散布在后缀中,例如.html,.shtml和.htm,也许还有一些大写的变体.在某些时候,您决定标准化.html后缀,并相应地重命名所有文件.但是你仍然有一堆使用其他后缀的遗留代码和链接,并且将它们全部生根需要一段时间.

在这种情况下,您可能需要这样的重写规则:

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

通过将此应用于子请求,您可以确保您的服务器端包含不会因重命名而中断.

点赞