0

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

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

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

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

4

2 回答 2

0

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

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

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

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

于 2012-09-25T08:09:52.580 回答
0

您的重写规则由空格分隔的 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]
于 2012-09-25T13:03:07.617 回答