我有一个网站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]

这不符合我的预期。我忘记了重写条件仅适用于遵循它们的第一条规则。问题是,如何将这些RewriteConditions应用于所有这些规则,而不必将其复制粘贴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/

    10-13 07:32