【问题标题】: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]