使用.htaccess重写url时,变量会消失

时间:2016-09-30 07:23:44

标签: .htaccess mod-rewrite url-rewriting

我完全坚持使用.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等已经消失。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您永远不会在RewriteRule指令中收到查询字符串。要在重写后转发先前的查询参数,请使用the QSA flag

RewriteEngine On
RewriteRule ^([a-zA-Z_-]+)/?$ index.php?page=$1 [NC,L,QSA]

,这将负责转发您的请求参数。