使用mod_rewrite维护查询字符串

Arr*_*ray 3 apache .htaccess mod-rewrite

我已正确配置我的网站以重新路由来自的每个流量

mywonderfulwebsite.com/ folder1/whatever-url .php

http:// folder1 .mywonderfulwebsite.com/whatever-url-as-above .php

问题是:很多时候,外部网站将页面与GET参数链接起来

mywonderfulwebsite.com/folder1/whatever-url.php*?trackingToken = 1*

所以,问题是如何让mod_rewrite在GET参数中传递给"重写"的url,如下所示:

folder1.mywonderfulwebsite.com/whatever-url-as-above.php*?trackingToken = 1*

目前,我正在做以下事情:

<VirtualHost *>
   ServerName mywonderfulwebsite.com
   ServerAlias www.mywonderfulwebsite.com
   DocumentRoot /var/www/mywonderfulwebsite/
   DirectoryIndex index.html

   <Directory />
      allow from all
      Options +FollowSymlinks -Indexes
   </Directory>

   RewriteEngine On
   RewriteRule    ^/folder1/(.*)?$    http://folder1.mywonderfulwebsite.com/$1&%{QUERY_STRING}    [L,R=301]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这段htaccess非常糟糕:例如,试图访问这个网址:

www.mywonderfulwebsite.com/folder1/ atextfile.txt

重定向到

folder1.mywonderfulwebsite.com/ atextfile.txt&

实际上,mod_rewrite附加了尾随&

我该如何解决这个问题?如何正确地重定向到正确的(也使用GET参数)url?

非常感谢

Dan*_*man 6

只需将[QSA]标志添加到其他标志中,即可自动重置[Q] uery [S] tring [A].

[L,R=301,QSA]
Run Code Online (Sandbox Code Playgroud)