我正在尝试使用.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个排列,这将使得手动输入每个可能的排列成为一项巨大的任务
有什么建议吗?我想做什么甚至可能?
答案 0 :(得分:0)
你正在尝试的规则似乎有点复杂,最好有更多的例子。
RewriteEngine on
RewriteRule ^.*/773%20CAR%20(.*)$ http://www.example.com/$1 [R=301,L]
应该做的工作。