我的.htaccess中有以下代码:
RewriteEngine On
Options -MultiViews
Options +FollowSymlinks
RewriteBase /testUrl/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
然后我使用$ _GET [' page']方法捕捉params。
这有效:
本地主机/ testUrl /参数1 /参数1
这个DOES&NT工作
http://localhost/testUrl/param1/param1?newparam=test&nextparam=test1
但是这个工作:
http://localhost/testUrl/param1/param1&newparam=test&nextparam=test1
我需要使用/ param1 / param2来完成第二个例子吗?newparam = etc
任何提示?非常感谢你们
答案 0 :(得分:0)
这是因为你的重写规则不包含QSA标志,它告诉apache追加查询字符串。
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [QSA,R=301,L]
要阅读有关重写mod标志的更多信息,请转至 - http://httpd.apache.org/docs/2.4/rewrite/flags.html