我写了一个.htaccess文件,正确地将以下行翻译成
http://localhost/questions/32/new-question-from-peter
到
http://localhost/questions.php?question_id=32.
我使用的代码是
RewriteRule ^questions/([0-9]+)/[^/]*(?:\?(.+)=(.*))?$ public/questions.php?question_id=$1&$2=$3 [NC,L]
但是当网址如下时,
http://localhost/questions/32/new-question-from-peter?page= <int>
即使我的网址是
,也不会正确处理网页信息http://localhost/questions.php?question_id=32&page=2
效果很好。
有人可以帮我解决这个问题,在我的代码中哪里出错了
答案 0 :(得分:1)
调试mod_rewrite的一般方法是设置日志文件并检查重写期间发生的事情:
<IfModule mod_rewrite.c>
RewriteLog "/var/log/rewrite.log"
RewriteLogLevel 3
</IfModule>
答案 1 :(得分:1)
您应该使用QSA
(查询字符串附加)标记,如下所示:
RewriteRule ^questions/([0-9]+)/[^/]*/?$ public/questions.php?question_id=$1 [NC,L,QSA]
在这种情况下会自动处理查询字符串(&page=2
),因此您无需在正则表达式中处理它,并将其附加到重写URL的末尾。