2011-01-27 189 views
0

我试图使用.htaccess创建一些301重定向,以修复Google遇到的一些Crawler错误。 Google正在使用我的部分网址的旧版本,当蜘蛛尝试访问传统路径时会导致错误发生。这些遗留的URL包含空格,并且其中有许多都显示在URL字符串中的不同位置。例如,URL可能看起来像这样:.htaccess 301使用RedirecMatch或RewriteRule重定向

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

这些URL不必要长,特别是因为他们最终都显示相同的内容。他们现在已经缩短到这样的事情:

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

从字面上有过的这1000个,但只有6个排列的URL的末尾,所以我想我可以很容易地使用任何RedirectMatch或重写规则,以匹配是否存在这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 

这工作,但它是有问题的,因为它相匹配,只有当汽车套件卤素 - 空调 - 油的存在,并有可能是200该URI段的排列,这将使手动输入每个可能的排列组成一项巨大的任务。

有什么建议吗?我正在努力做甚么?

+0

它看起来像你正在试图完成这样的事情:`RedirectRule^/。* - halogen-aircon-oil /([0-9] +)。* $ http://www.example.com/ $ 1-halogen-aircon-oil [R = 301,L]`这是一般格式吗? – 2011-01-27 03:39:39

+0

问题是第一部分有大约200个排列,其中大部分可能与第二部分无关。因此,与第一部分的匹配将不起作用,因为它可以 - 对于所有意图和目的 - 任何事情。 – 2011-01-27 07:13:46

回答

0

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

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

应该做的工作。