【问题标题】:Redirect URL using Query String parameter in URL使用 URL 中的查询字符串参数重定向 URL
【发布时间】:2010-12-20 17:34:09
【问题描述】:

我有一堆来自最近更新到 EE2 的旧网站的 URL。这些 URL 如下所示:
http://www.example.com/old/path.asp?dir=Folder_Name

这些网址需要重定向到:
http://www.example.com/new_path/folders/folder_name

并非所有Folder_Name 字符串都与folder_name URL 段匹配,因此这些很可能需要静态重定向。

我为名为“Example_One”的特定文件夹尝试了以下规则,该文件夹映射到新站点上名为“example1”的页面:

Redirect 301 /old/path.asp?dir=Example_One
             http://www.example.com/new_path/folders/example1

但这不起作用。我没有重定向,而是收到一个 404 错误,告诉我找不到 http://www.example.com/old/path.asp?dir=Example_One

编辑:
这里还有一个次要问题,可能相关也可能不相关:我有一个看起来像这样的包罗万象的规则:
重定向 301 /old/path.asp http://www.example.com/new_path

使用该规则,像上面第一个这样的请求将被重定向到:
http://www.example.com/new_path?dir=Folder_Name这会触发 404 错误。

【问题讨论】:

    标签: apache .htaccess mod-rewrite expressionengine


    【解决方案1】:

    只需要多搜索一下 Google 就可以找到 mod_rewrite 的正确语法。

    使用上面的例子:

    RewriteCond %{QUERY_STRING} ^dir=Example_One$
    RewriteRule ^/old/path\.asp$ /new_path/folders/example1? [R=301,L] 
    

    这解决了上述两个问题——至于为什么 EE 在查询字符串中使用一个参数时会出现 404,该问题仍未解决,但这是解决该问题的一种解决方法。

    您还可以将 URL 重定向到特定页面,其中参数每次可能具有不同的值。其中一个示例是 Google UTM 广告系列跟踪(在这种情况下,跟踪查询字符串会触发 404):

    链接:http://www.example.com/?utm_source=xxx&.....(触发 404)
    应该重定向到:http://www.example.com

    RewriteCond %{QUERY_STRING} ^utm_source=
    RewriteRule ^$ http://www.example.com? [R=301,L] 
    

    注意:这只会将这些请求重定向到主页,如 ^$ 所定义。如果要将 utm 请求重定向到不同的页面,则需要更改该 RewriteRule 的第一部分。

    【讨论】:

    猜你喜欢
    • 2014-11-03
    • 2014-01-24
    • 1970-01-01
    • 2012-11-29
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多