将 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(永久)重定向 - 如果这是意图 - 一旦您确认它按预期工作。您可能需要在测试前清除浏览器缓存。
我有一个 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(永久)重定向 - 如果这是意图 - 一旦您确认它按预期工作。您可能需要在测试前清除浏览器缓存。