【问题标题】:Redirection using .regex & htaccess to new URL with added query string使用 .regex 和 htaccess 重定向到添加了查询字符串的新 URL
【发布时间】:2012-09-25 21:03:07
【问题描述】:

尝试使用正则表达式和 .htaccess 重定向旧网站博客档案,以便使用包含类别过滤器的查询字符串在新网站的主档案下找到。

我正在尝试进行以下重定向工作

RewriteRule ^blog/2012/04 http://example.com/2012/04?cat=306,10,11 [R=301,L]

如何使用 regex 和 .htaccess 识别目标 URL 查询字符串中的 ?

【问题讨论】:

    标签: regex .htaccess mod-rewrite rewrite query-string


    【解决方案1】:

    ? 是正则表达式中的特殊字符。它是一个量词,使前一个字符“可选”意味着它可以存在或不存在 ==> 匹配 0 次或 1 次。

    因此,如果您想在字符串中逐字匹配,则必须使用反斜杠对其进行转义:

    RewriteRule ^blog/2012/04 http://example\.com/2012/04\?cat=306,10,11 [R=301,L]
    

    顺便说一句。点 . 也一样。它是一个可以匹配任何字符的特殊字符,所以如果它应该匹配一个点,请转义它。

    【讨论】:

      【解决方案2】:

      您的重写规则由 3 个部分组成,以空格分隔

      the regex: ^blog/2012/04
      
      the target: http://example\.com/2012/04\?cat=306,10,11
      
      flags: [R=301,L]
      

      没有应用于目标的正则表达式!

      如果要将查询字符串从源url携带到目标url,可以这样做:

      RewriteCond %{QUERY_STRING} (.*)
      RewriteRule ^blog/2012/04$ http://example.com/2012/04?%1 [R=301,L]
      

      【讨论】:

        猜你喜欢
        • 2022-03-24
        • 2011-08-03
        • 2021-04-05
        • 1970-01-01
        • 1970-01-01
        • 2014-05-07
        • 2016-02-13
        • 2018-10-10
        • 1970-01-01
        相关资源
        最近更新 更多