不能用“?”在 URL 因为 .htaccess
Can't use "?" in URL because .htaccess
我的 .htaccess 中有以下代码:
RewriteEngine On
Options -MultiViews
Options +FollowSymlinks
RewriteBase /testUrl/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page= [L]
RewriteRule ^(.*)\/(\?.*)?$ [R=301,L]
然后我使用 $_GET['page'] 方法捕获参数。
这个有效:
localhost/testUrl/param1/param1
这行不通
http://localhost/testUrl/param1/param1?newparam=test&nextparam=test1
但这行得通:
http://localhost/testUrl/param1/param1&newparam=test&nextparam=test1
我需要使用 /param1/param2?newparam=etc
来处理第二个示例...
有什么建议吗?非常感谢大家
那是因为您的重写规则不包含 QSA 标志 告诉 apache 附加查询字符串。
RewriteRule ^(.*)$ index.php?page= [QSA,L]
RewriteRule ^(.*)\/(\?.*)?$ [QSA,R=301,L]
要阅读有关重写 mod 标志的更多信息,请转到 - http://httpd.apache.org/docs/2.4/rewrite/flags.html
我的 .htaccess 中有以下代码:
RewriteEngine On
Options -MultiViews
Options +FollowSymlinks
RewriteBase /testUrl/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page= [L]
RewriteRule ^(.*)\/(\?.*)?$ [R=301,L]
然后我使用 $_GET['page'] 方法捕获参数。
这个有效:
localhost/testUrl/param1/param1
这行不通
http://localhost/testUrl/param1/param1?newparam=test&nextparam=test1
但这行得通:
http://localhost/testUrl/param1/param1&newparam=test&nextparam=test1
我需要使用 /param1/param2?newparam=etc
来处理第二个示例...有什么建议吗?非常感谢大家
那是因为您的重写规则不包含 QSA 标志 告诉 apache 附加查询字符串。
RewriteRule ^(.*)$ index.php?page= [QSA,L]
RewriteRule ^(.*)\/(\?.*)?$ [QSA,R=301,L]
要阅读有关重写 mod 标志的更多信息,请转到 - http://httpd.apache.org/docs/2.4/rewrite/flags.html