不能用“?”在URL中因为.htaccess

时间:2015-02-21 10:44:33

标签: php .htaccess get

我的.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

任何提示?非常感谢你们

1 个答案:

答案 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