尝试使用正则表达式和 .htaccess 重定向旧网站博客档案,以便使用包含类别过滤器的查询字符串在新网站的主档案下找到。
我正在尝试使以下重定向工作
RewriteRule ^blog/2012/04 http://example.com/2012/04?cat=306,10,11 [R=301,L]
如何使用 regex 和 .htaccess 识别?
目标 URL 查询字符串中的?
尝试使用正则表达式和 .htaccess 重定向旧网站博客档案,以便使用包含类别过滤器的查询字符串在新网站的主档案下找到。
我正在尝试使以下重定向工作
RewriteRule ^blog/2012/04 http://example.com/2012/04?cat=306,10,11 [R=301,L]
如何使用 regex 和 .htaccess 识别?
目标 URL 查询字符串中的?
?
是正则表达式中的特殊字符。它是一个量词,使前一个字符“可选”意味着它可以存在或不存在 ==> 匹配 0 次或 1 次。
因此,如果您想在字符串中逐字匹配它,则必须使用反斜杠对其进行转义:
RewriteRule ^blog/2012/04 http://example\.com/2012/04\?cat=306,10,11 [R=301,L]
顺便提一句。一个点也一样.
。它是一个可以匹配任何字符的特殊字符,所以如果它应该匹配一个点,请转义它。
您的重写规则由空格分隔的 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]