.htaccess文件中过度热心的RedirectMatch

时间:2013-02-07 21:13:04

标签: .htaccess mod-rewrite

我刚刚转换了一个有数千个不良链接的网站,我一直在清理成千上万的索引错误,其中一些是重定向301s,另一些是RedirectMatch。但是,我收到一个令我困惑的错误。

.htaccess文件中的这两行代码中的任何一行

RedirectMatch 301 /faqs(.*) http://www.belleviewanimalclinic.com/pet-care-faqs/
RedirectMatch 301 /faq(.*) http://www.belleviewanimalclinic.com/pet-care-faqs/

导致此页面

http://www.belleviewanimalclinic.com/denver-veterinarian-articles/faqs-about-pet-dentistry/

重定向到这里

http://www.belleviewanimalclinic.com/pet-care-faqs/

有很多以/ faqXXXXXX开头的旧网址需要重定向到新的常见问题页面。但是,我不希望这适用于上述文章。

有没有办法可以重写RedirectMatch规则,以便只重定向以/ faq开头的URL,而不是请求URL中间的某个地方?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用插入符号匹配路径的开头:

RedirectMatch 301 ^/faqs?(.*) http://www.belleviewanimalclinic.com/pet-care-faqs/

我通过使“s”可选(将其跟随“?”)将两行合并为一行。插入符号应该是这样的,所以路径必须以faq开头,而不仅仅包括它。

注意:我最初删除了开始斜杠,因为匹配字符串通常在开始斜杠之后开始,但是我更习惯于RewriteRules而不是RedirectMatches,我相信行为可能会有所不同。