301带有查询参数的重定向目录

时间:2013-12-11 13:43:43

标签: regex apache .htaccess mod-rewrite http-status-code-301

我想将/bar/中的所有内容重定向到新的子域,但仍会传入原始网址中的任何查询参数。 E.g

原始网址示例:

  1. http://www.foo.com/bar/
  2. http://www.foo.com/bar/index.php
  3. http://www.foo.com/bar/index.html
  4. http://www.foo.com/bar/test.php?id=123&utm_source=google
  5. 应重定向到:

    1. http://bar.foo.com/
    2. http://bar.foo.com/
    3. http://bar.foo.com/
    4. http://bar.foo.com/?id=123&utm_source=google
    5. 这就是我目前所拥有的:

      RewriteEngine On
      RewriteRule ^bar/?(.*)$ https://bar.foo.com/? [R=301,L]
      

      但是,它没有传递上面第四个例子中我需要的查询参数。我知道?会阻止传递查询参数,所以这很可能需要删除我假设但不确定要用什么来替换它?

      干杯

1 个答案:

答案 0 :(得分:1)

添加如下新规则:

RewriteEngine On

RewriteRule ^bar(/|$) https://bar.foo.com/ [NC,R=301,L]

QUERY_STRING将自动转移到目标URI。

确保目标URI中没有用于删除现有查询字符串的尾随?