我快被这个 htaccess 搞死了:
RewriteCond %{HTTP_HOST} ^[www\.]?old\.com [NC]
RewriteCond %{REQUEST_URI} ^.+$
RewriteCond %{REQUEST_URI} !^wp-admin
RewriteCond %{REQUEST_URI} !^index
RewriteCond %{REQUEST_URI} !^subdomain
RewriteRule ^(.*)$ http://www.new.com/%{REQUEST_URI} [R=301,L]
我试图将所有流量从 www.old.com 重定向到 www.new.com,但以下情况除外:
www.old.com
old.com
old.com/wp-admin
old.com/subdomain
我仍然希望旧站点能够显示并能够管理它,但任何站点old.com/something
都应重定向至new.com/something
。
还有一件事,我无法通过将其用作反向引用来使其工作。我不得不在其中$1
进行硬编码(这有效)。%{REQUEST_URI}
最后一个例子(old.com/subdomain
)完全是第二个网站,我也不想干扰它的运行。
我读过很多网站,从正则表达式的角度来看,每种变体都完全合理,它们都应该有效,但事实并非如此。这让我抓狂。
答案1
在您的.htaccess 中尝试以下规则:
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/?(wp-admin|index|subdomain) [NC]
RewriteRule ^(.+)$ http://www.new.com/$1 [R=301,L,QSA,NE]
如果它不起作用请告诉我。