我有一个网站,各个部分parse request URLs by themselves有些则没有(例如 vBulletin 论坛)。我必须向适当脚本发送请求的 .htaccess 是:
# wiki, shop, admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.js
RewriteRule ^wiki/(.*)$ w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ wiki/ [L,QSA]
RewriteRule ^shop/ /shop/shop.php [NC,L]
RewriteRule ^forum/admincp/pkr/ /forum/admincp/pkr/pkr.php [NC,L]
这并不像我预期的那样有效。我忘记了重写条件只适用于它们之后的第一条规则。问题是如何将这些 RewriteCondition 应用到所有这些规则,而不必复制粘贴它们 4 次?
问题是这样的:
- /shop/example 重写为/shop/shop.php
/shop/shop.php 然后再次重写为/shop/shop.php(阅读:我们有一个无限循环)。如果将此条件应用于该重写规则,则不会发生这种情况,因为/shop/shop.php 是一个实际文件:
RewriteCond %{REQUEST_FILENAME} !-f
所以是的...
最佳答案
反转表达式并将其附加到破坏规则:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} (.*)\.js
RewriteRule ^ - [L]
关于php - 让一些 RewriteCond 影响多个规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715765/