当我将以下规则添加到.htaccess
时,它可以正常工作。
RewriteRule ^(.+)$ /index.php?p=$1 [L,QSA]
当我添加以下规则时,如果没有上面的规则,它也可以。
RewriteRule ^(.+)/(.+)$ /index.php?p=$1&p2=$2 [L,QSA]
然而,当我同时使用这两个规则时,在第一个规则之前使用第二个规则,我得到Internal Server Error
。
这里有什么问题?
答案 0 :(得分:1)
这是因为第一条规则还将/index.php重写为自身。
你需要使用一个基于正面的否定正则表达式来排除/index.php
RewriteRule ^(.+)/(.+)$ /index.php?p=$1&p2=$2 [L,QSA]
RewriteRule ^((?!index\.php).+)$ /index.php?p=$1 [L,QSA]