我遇到了有关网址重写的问题。我正在使用Apache的mod重写来重写URL。例如,我重写了URL
www.website.com/some/path/
至request.php?string=some/path/
。然后我会显示此网址的具体回复。现在我的重写规则如下所示:
RewriteRule ^([a-z_/\?]+)$ request.php?string=$1
但问题是,如果我有网址www.website.com/some/data/?id=12&name=John
并重写它,我会得到这样的结果:request.php?string=some/data/?id=12&name=John
。似乎在这个例子中另一个问号混淆了PHP。如果我尝试在request.php中检索$_GET['string']
,我得到的是:some/data/
。
为了进一步参考,Gmail会使用与其URL相似的内容:
https://mail.google.com/mail/?ui=1&shva=1
答案 0 :(得分:5)
我建议(作为马里奥)来看看QSA flag (Query String Append)。另外,我会从正则表达式中的字符类中取出问号:
RewriteRule ^([a-z_/]+)$ request.php?string=$1 [L,QSA]