独特的PHP和HTACCESS域转发问题


Unique PHP and HTACCESS domain forwarding issue

我有一个位于Network Solutions的站点,以及两个域。"旧域"过去指向主机帐户,但现在"新域"指向主机。

问题:如果不创建重定向循环,重定向"OldDomain"就无法工作。

我试过以下几种:

1) 重定向OldDomain(带/out"www"),加上重定向NewDomain:的非www

RewriteCond %{HTTP_HOST} ^www.olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^olddomain.com$
RewriteCond %{HTTP_HOST} ^newdomain.com [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,NC]

2) 使用PHP头重定向:

$dom = $_SERVER['HTTP_HOST'];
if(strripos($dom, 'olddomain.com') >= 0) {
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://www.newdomain.com/");
}

选项#1没有任何作用。选项#2使我处于重定向循环中,即使前两个RewriteCond规则被注释掉了。

我以前做过很多.htaccess重定向,但这次让我头疼,为什么它的行为不正确。这只是网络解决方案的问题吗?我从来没有遇到过其他主持人的问题。顺便说一下,NS支持告诉我必须付费将OldDomain转发到NewDomain,因为它目前没有指向托管包。如果是这样的话,为什么我不能将两个域都指向同一个托管包,并且至少在索引页的标题中使用PHP重定向??

感谢您在这方面的帮助!

选项1没有任何作用,因为在条件中有这个逻辑

  • 主机为www.olddomain.com
  • OR主机为olddomain.com
  • AND主机为newdomain.com

显然,主机不可能同时是newdomain.com和旧域中的任何一个。尝试添加一个额外的[OR]和一些[NC]

RewriteCond %{HTTP_HOST} ^www.olddomain.com$ [OR,NC]
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR,NC]
RewriteCond %{HTTP_HOST} ^newdomain.com [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,NC]

选项2,您可以查看主机是否包含olddomain.com:

if(strripos($dom, 'olddomain.com') >= 0) {

这里的问题是,如果没有找到字符串,strripos()将返回FALSE(也是一个0),这意味着如果$domwww.newdomain.com,它将返回FALSE或0,而>= 0将为true,从而再次重定向。你需要做这样的事情:

if(strlen(strstr($dom, 'olddomain.com')) > 0) {