将 WP 多站点 URL 重定向到子站点 URL

Redirecting a WP multisite URL to a subsite URL

我有一个 WordPress 多站点安装,其基础 URL 为 https://example.com。子站点的初始 URL 为 https://example.com/forinstance,可以在 WordPress 中将其更改为别名 https://forinstance.com

但我想将所有 URL 从 https://example.com/caseinpoint 重定向到 https://forinstance.com。在 WordPress 中没有办法做到这一点,所以我试图在我的 .htaccess 文件中做到这一点。但是我无法让它工作。

我尝试过以下变体:

RewriteCond %{HTTPS_HOST} ^example.com/caseinpoint$
RewriteRule (.*)$ https://forinstance.com [R=301,L]

但它总是在 example.com 上转到 404。

但是,这对其他子站点有效:

RewriteCond %{HTTPS_HOST} ^ejemplo.com$
RewriteRule (.*)$ https://perinstanza.com [R=301,L]

所以这似乎与多站点有关。请问如何重定向 example.com/forinstance?!

由于 HTTPS_HOST 不是有效的服务器变量,因此您发布的规则实际上都不会执行任何操作。它应该是 HTTP_HOST,表示 Host HTTP 请求 header(因此有 HTTP_ 前缀)。 IE。正在请求的 主机名(或 )。

Host header 不包括您试图在第一条规则中匹配的 URL-path。

您可能希望将剩余的 URL-path 重定向到新域中的相同内容。例如。 https://example.com/caseinpoint/<url> 应该重定向到 https://forinstance.com/<url>?正如您所说,您不是真的只是将 https://example.com/caseinpoint(缺少尾部斜杠)重定向到 https://forinstance.com/总是 主机名后有一个斜杠?

在这种情况下,您可以在根 .htaccess 文件的顶部执行类似以下操作, 任何现有的 WordPress 指令之前。

RewriteCond %{HTTP_HOST} ^(www\.)example\.com [NC]
RewriteRule ^caseinpoint(?:$|/(.*)) https://forinstance/ [R=302,L]

这也允许使用可选的 www 子域。

</code> 反向引用包含 <code>RewriteRule 模式 中第一个捕获子模式的值,即。 URL-path after “caseinpoint/”(不包括斜杠)。

首先使用 302(临时)重定向进行测试,以避免任何潜在的缓存问题。只有更改为 301(永久)重定向 - 如果这是意图 - 一旦您确认它按预期工作。您可能需要在测试前清除浏览器缓存。