为什么我的mod重写不会影响我的分页

时间:2012-06-10 17:53:16

标签: php mod-rewrite

  

可能重复:
  Query Strings & Mod ReWrite

我写了一个.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

效果很好。

有人可以帮我解决这个问题,在我的代码中哪里出错了

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的末尾。