.htaccess 在屏蔽域上重定向,仅在使用特定域时才生效

.htaccess redirects on masked domains, only written to take effect when specific domains are in use

我在 Apache 服务器上设置了 WordPress 多站点。出于 SEO 的原因,我试图将尽可能多的 JS 重定向转移到 .htaccess 文件中的 HTTP 301。因为这个多站点上的域被屏蔽了,所以所有这些域共享一个顶级目录和一个 .htaccess 文件。因此,我无法让每个重定向都变得简单

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

例如,如果我们有一项服务关闭了德克萨斯州奥斯汀的一个位置,而另一项服务在德克萨斯州奥斯汀仍有一个开放位置,并且两个 URL 都设置为 "example.com/austin/",我不能将“/austin/”发送到一个地方的包罗万象的重定向。这会产生大量潜在的冲突。


所以我正在尝试创建仅在使用特定屏蔽域时才生效的重定向。下面是我正在使用的代码,但它不起作用,请注意我正在确保尾部斜杠和非尾部斜杠都被覆盖:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [nc]
RewriteRule ^old1$ https://example.com/new1/ [R=301,NC,L]
RewriteRule ^old1/$ https://example.com/new1/ [R=301,NC,L]
RewriteRule ^old12$ https://example.com/new12/ [R=301,NC,L]
RewriteRule ^old12/$ https://example.com/new12/ [R=301,NC,L]
#...

怎么了?

我想通了!

我在那里有一个规则来强制尾部斜杠。

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

因为它位于所有重定向之上,所以它使它们无效。我将该规则移到他们下面并修复了它。