RewriteCond %{HTTP_HOST} ^site.olddomain.com/wp-content/uploads/sites/2$
The
HTTP_HOST
服务器变量只包含主机名(
Host
HTTP请求标头)。它不包含URL路径,因此上述条件永远不会匹配。
但新域中的site\\u id为2。
但你的指令似乎在试图做相反的事情。。。正在检查2
在site.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