WordPress多站点HTAccess重定向到新域

时间:2018-07-26 作者:Gani Siva kumar

RewriteCond %{HTTP_HOST} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\\.site.olddomain\\.com$
RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
所有帖子URL都已成功重定向。但问题是我以前的多站点site_id 与新的多站点不同site_id.

所以所有site.olddomain.com/wp-content/uploads/sites/7/..正在重定向到site.newdomain.com/wp-content/uploads/7/...

但是site_id 在新域中是2, 不7.

我试过这个

 RewriteCond %{HTTP_HOST} ^site.olddomain.com/wp-content/uploads/sites/2$
 RewriteRule ^(.*)$ 
 https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
 RewriteCond %{HTTP_HOST} ^site.olddomain.com$ [OR]
 RewriteCond %{HTTP_HOST} ^www\\.site.olddomain\\.com$
 RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
但它仍在错误地重定向。

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

RewriteCond %{HTTP_HOST} ^site.olddomain.com/wp-content/uploads/sites/2$
TheHTTP_HOST 服务器变量只包含主机名(Host HTTP请求标头)。它不包含URL路径,因此上述条件永远不会匹配。

但新域中的site\\u id为2。

但你的指令似乎在试图做相反的事情。。。正在检查2site.olddomain.com 并重定向到7 在新域上?(但你的其他网站呢?)

RewriteRule ^(.*)$ https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
您似乎还省略了连字符(-) 在里面wpcontent?

您需要编写类似以下intsead的特定重定向:

RewriteCond %{HTTP_HOST} ^site\\.olddomain\\.com [NC]
RewriteRule ^(wp-content/uploads/sites)/2/(.*) https://site.newdomain.com/$1/7/$2 [R=301,L]
一些注意事项:

不要忘记对模式中的点进行转义,以匹配文字点(您已经转义了一些而不是其他)$ 在CondPattern上,检查HTTP\\U主机以捕获FQDN(以点结尾)NC 标记到RewriteCond 指令使检查不区分大小写。这实际上只是为了捕获格式错误的请求(所有浏览器都会将请求中的主机名小写)

RewriteCond %{HTTP_HOST} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\\.site.olddomain\\.com$
这两个RewriteCond 只需将www. 部分可选:

RewriteCond %{HTTP_HOST} ^(www\\.)?site\\.olddomain\\.com

结束

相关推荐

search form redirects to home

Update 案件已结案。我忘了我的函数中有kill函数。php将附件、搜索、作者、每日存档页面重定向到主页。删除了用于搜索的部件,效果良好。很抱歉,感谢您的时间和帮助:)我在wordpress中有一个简单的搜索表单<form role=\"search\" method=\"get\" class=\"search-form\" action=\"<?php echo home_url( \'/\' ); ?>\"> <label> <