我完全坚持使用.htaccess尝试重写请求,所以:
website.com/SOMEPAGE
website.com/SOMEPAGE/?arg1=a&arg2=b&arg3
... ...变为
website.com/index.php?page=SOMEPAGE
website.com/index.php?page=SOMEPAGE&arg1=a&arg2=b&arg3
我的.htaccess看起来像这样:
RewriteEngine On
RewriteRule ^([a-zA-Z_-]+)\/?(\?(.+))?$ index.php?page=$1&$3 [NC,L]
然后在index.php中:
<script>
var vars = '<?php print(json_encode($_GET)); ?>';
console.log(vars);
</script>
控制台只记录:
{&#34;页面&#34;:&#34; SomePage的&#34;}
arg1,arg2等已经消失。
我做错了什么?
答案 0 :(得分:0)
您永远不会在RewriteRule
指令中收到查询字符串。要在重写后转发先前的查询参数,请使用the QSA
flag:
RewriteEngine On
RewriteRule ^([a-zA-Z_-]+)/?$ index.php?page=$1 [NC,L,QSA]
,这将负责转发您的请求参数。