首页 > 解决方案 > 防止 htaccess 301 重定向中的通配符

问题描述

我已经设置了一个 htaccess 301 重定向来将索引页面重定向到一个新页面,但这也充当了子页面的通配符重定向,我不知道会发生什么。

旧结构

新结构

htaccess 重定向到位:

Redirect 301 /faq/ https://example.com/faqs/

这可以毫无问题地将 /faq 发送到 /faqs 但是它也将 /faq/* 发送到 /faqs/* ,这是我不希望发生的。

例如,去example.com/faq/question-1会导致一个 to many redirects 错误,最后登陆example.com/faqs/question-1

有什么我可以添加到单个重定向行来防止这种情况发生的,还是我可以使用它们更复杂的 RewriteRule 使用。对此事的研究最初似乎证实了这应该/将会发生,如果确实如此,可以添加什么来防止它。在提示 apache 文档后,我可以看到为什么它们会重定向为通配符。

标签: apache.htaccessredirect

解决方案


在 CBroe 建议使用RedirectMatch的实现之后。

RedirectMatch 301 ^/faq/$ https://example.com/faqs

现在这会将 /faq 重定向到 /faqs,但不会将 /faq/question-1 重定向到 /faqs/question-1 等


推荐阅读