0

可能重复:
查询字符串和 Mod 重写

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

它完美地工作。

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

4

2 回答 2

1

调试 mod_rewrite 的一个很好的通用方法是设置一个日志文件并检查重写期间发生的情况:

<IfModule mod_rewrite.c>
RewriteLog "/var/log/rewrite.log"
RewriteLogLevel 3
</IfModule>
于 2012-06-10T17:58:16.457 回答
1

您应该使用QSA(Query String Append) 标志,如下所示:

RewriteRule ^questions/([0-9]+)/[^/]*/?$ public/questions.php?question_id=$1 [NC,L,QSA]

在这种情况下,查询字符串 ( &page=2) 会自动处理,因此您不需要在正则表达式中处理它,它会附加到重写 URL 的末尾。

于 2012-06-10T17:59:49.687 回答