【问题标题】:Variables disappear on url rewrite with .htaccess使用 .htaccess 重写 url 时变量消失
【发布时间】:2016-09-30 17:26:05
【问题描述】:

我完全被 .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>

控制台只记录日志:

{"page":"SOMEPAGE"}

arg1、arg2 等已消失。

我做错了什么?

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2019-03-07
      • 2017-10-01
      相关资源
      最近更新 更多