首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RedirecMatch或RewriteRule进行.htaccess 301重定向

使用RedirecMatch或RewriteRule进行.htaccess 301重定向
EN

Stack Overflow用户
提问于 2011-01-27 11:09:04
回答 1查看 591关注 0票数 0

我正在尝试使用.htaccess创建大约301个重定向,以修复谷歌遇到的一些爬虫错误。Google正在使用我的一些URL的旧版本,当爬行器试图访问遗留路径时,这会导致出现错误。这些传统URL包含空格,并且有许多空格,它们都出现在URL字符串中的不同位置。例如,URL可能如下所示:

代码语言:javascript
复制
http://www.example.com/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil

这些URL是不必要的长,特别是因为它们最终都显示相同的内容。它们现在被缩写为如下所示:

代码语言:javascript
复制
http://www.example.com/773-halogen-aircon-oil

实际上有超过1,000个,尽管只有6个网址结尾的排列,所以我想我可以使用RedirectMatch或RewriteRule来轻松地匹配这6个排列中的一个是否存在,并重定向到适当的新网址。我尝试过以下几种方法:

代码语言:javascript
复制
RedirectMatch .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil

以及:

代码语言:javascript
复制
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]

这些都不起作用。我尝试了许多不同的方法,包括使用\而不是regex字符类来转义空格,将regex的开头更改为^.*/?773以及许多其他方法,但都不起作用。

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

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

代码语言:javascript
复制
Redirect 301 "/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil" http://www.example.com/773-halogen-aircon-oil

这是可行的,但它是有问题的,因为它只在car-kits-halogen-aircon-oil存在的情况下才匹配,并且可能有200个URI段的排列,这将使手动输入每个可能的排列成为一项巨大的任务。

有什么建议吗?我想要做的事情有可能实现吗?

EN

回答 1

Stack Overflow用户

发布于 2011-01-27 11:48:38

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

代码语言:javascript
复制
RewriteEngine on
RewriteRule ^.*/773%20CAR%20(.*)$ http://www.example.com/$1 [R=301,L]

应该能胜任这项工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4812354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档