1

我遇到了有关 URL 重写的问题。我正在使用 Apache 的 mod rewrite 来重写 URL。例如,我重写 URL

  • www.website.com/some/path/
  • request.php?string=some/path/.

然后我显示此 URL 的特定响应。现在我的重写规则如下所示:

RewriteRule ^([a-z_/\?]+)$ request.php?string=$1

但是如果我有 URLwww.website.com/some/data/?id=12&name=John并重写它,问题就开始了,我得到这样的东西:request.php?string=some/data/?id=12&name=John. 似乎在这个例子中另一个问号混淆了 PHP。如果我尝试$_GET['string']在 request.php 中检索,我得到的只是:some/data/

为了进一步参考,Gmail 对其 URL 做了类似的事情:
https://mail.google.com/mail/?ui=1&shva=1

4

1 回答 1

5

我建议(作为马里奥)查看QSA 标志(查询字符串附加)。此外,我会将问号从正则表达式中的字符类中取出:

RewriteRule ^([a-z_/]+)$ request.php?string=$1 [L,QSA]
于 2012-04-10T20:11:44.877 回答