如何在 htaccess 中的某个 URL 之后使用通配符重定向所有内容?

How can I wildcard redirect everything after a certain URL in htaccess?

我们最近对我们的一个网站进行了更改,其中大量 URL 需要通过 htaccess 重定向,但我们还需要考虑可能附加在 URL.

我可以获得特定的 URL 以按预期进行重定向,但之后无法使用其他字符。我知道有时候文件中的顺序规则很重要,比如 提到的,但这些重定向不应该有任何冲突的规则。

这些都是特定的 URL,因此 关于匹配 URL 结构中的特定单词对我们的问题不起作用。

看来FOO/BAR/BAZ到FOO/NEW/BAZexample也不适用。

我认为我们的缓存可能会影响它,但其他更改已立即实施,所以我认为这只是语法问题

我们 htaccess 中的当前格式示例 URL:

Redirect 301 /product/product-name/ https://example.com/announcements/

需要发生什么: 人们为 /product/product-name/ 提供的任何传入直接链接,包括尾部斜杠后的任何内容,例如 /product/product-name/ref /123/ 也应该重定向到 /announcements/ 但事实并非如此,这些类型的链接将转到我们的 404 页面。

尝试的解决方案:到目前为止(今天-这不是我第一次尝试这个),我已经尝试了以下方法来通配我的 301,但没有成功:

所以问题:Wildcard redirect at end of url in .htaccess

所以问题:Wildcard RewriteRule for 301 redirects in htaccess

外部参考:https://bootstrapcreative.com/how-to-redirect-known-pages-and-catch-all-for-everything-else-htaccess/

我乐于接受建议并感谢任何建议!

Redirect 301 /product/product-name/ https://example.com/announcements/

mod_alias Redirect 指令是 prefix-matching 并且匹配后的所有内容都被复制到目标 URL 的末尾。因此,例如,对 /product/product-name/ref/123/ 的请求将被重定向到 https://example.com/announcements/ref/123/(因为 ref/123/ 是 URL-path 在与 /product/product-name/ 匹配后剩下的)。它似乎是目标 URL,即。 https://example.com/announcements/ref/123/,这导致了 404,因此重定向 正在 发生。

要将 /product/product-name/<anything> 重定向到 https://example.com/announcements/ 才需要使用 RedirectMatch 指令,它使用正则表达式匹配,而不是简单的 prefix-matching.

例如:

RedirectMatch 301 ^/product/product-name/ https://example.com/announcements/

这将重定向如下:

  • /product/product-name/https://example.com/announcements/
  • /product/product-name/ref/123/https://example.com/announcements/
  • /product/product-name/<anything>https://example.com/announcements/

如果您需要更具体,例如。只匹配可选的附属链接,例如。 /ref/<number>/,而不是字面上的 anything,然后改为执行类似以下的操作:

RedirectMatch 301 ^/product/product-name/(ref/\d+/)?$ https://example.com/announcements/

如评论中所述,您应该首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。并且您需要在测试前清除浏览器缓存,因为错误的 301(永久)重定向将被浏览器缓存。

但是,如果您已经在配置文件的其他地方使用了 mod_rewrite (RewriteRule) 指令,那么您可能需要(或更可取)使用 mod_rewrite 进行此重定向相反。

参考: