.htaccess 301使用RedirecMatch或RewriteRule重定向

时间:2011-01-27 03:09:04

标签: .htaccess mod-rewrite redirect mod-alias

我正在尝试使用.htaccess创建一些301重定向,以修复Google遇到的一些Crawler错误。 Google正在使用我的部分网址的旧版本,这会导致蜘蛛尝试访问旧版路径时出现错误。这些遗留URL包含空格,其中有许多都出现在URL字符串中的不同位置。例如,URL可能如下所示:

http://www.example.com/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil

这些网址不必要很长,特别是因为它们最终都显示了相同的内容。他们现在缩短为这样的东西:

http://www.example.com/773-halogen-aircon-oil

虽然URL末尾只有6种,但我认为我可以使用RedirectMatch或RewriteRule轻松匹配这6种排列中的一种是否存在并重定向到适当的新URL。我尝试过以下方法:

RedirectMatch .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil

以及:

RewriteEngine On
RewriteBase /
RewriteRule .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil [R=301,L]

这些都不起作用。我尝试了很多不同的选项,包括使用\而不是正则表达式字符类转义空格,将正则表达式的开头更改为^。* /?773以及许多其他内容,但没有任何作用。

我在http://www.regular-expressions.info/javascriptexample.html使用了正则表达式测试功能,它报告我的正则表达式有效并生成与我期望的URL匹配,但.htaccess没有像我期望的那样重定向。

我可以使用普通的重定向,如下所示:

Redirect 301 "/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil" http://www.example.com/773-halogen-aircon-oil

这是有效的,但这是有问题的,因为它只在汽车套件 - 卤素空气 - 油存在时才匹配,并且该URI段可能有200个排列,这将使得手动输入每个可能的排列成为一项巨大的任务

有什么建议吗?我想做什么甚至可能?

1 个答案:

答案 0 :(得分:0)

你正在尝试的规则似乎有点复杂,最好有更多的例子。

RewriteEngine on
RewriteRule ^.*/773%20CAR%20(.*)$ http://www.example.com/$1 [R=301,L]

应该做的工作。