【问题标题】:Unique PHP and HTACCESS domain forwarding issue独特的 PHP 和 HTACCESS 域转发问题
【发布时间】:2012-08-17 01:04:21
【问题描述】:

我有一个托管在 Network Solutions 的网站以及两个域。 “OldDomain”过去指向托管帐户,但现在“NewDomain”指向主机。

问题:如果不创建重定向循环,重定向“OldDomain”将不起作用。

我尝试了以下方法:

1) 重定向 OldDomain(带/不带“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 重定向??

感谢您对此的任何帮助!

【问题讨论】:

    标签: php .htaccess redirect http-status-code-301


    【解决方案1】:

    选项 1 不执行任何操作,因为您的条件中有此逻辑

    • 主机是www.olddomain.com
    • 主机是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 为真,因此再次重定向。你需要做这样的事情:

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

    【讨论】:

    • 谢谢,乔恩...我会试一试的。说得通。 ...您认为我使用哪个真的很重要吗?我猜为了简单起见,最好将所有内容都放在 htaccess 中,除非有人使用“olddomain.com”时服务器遗漏了什么?这就是我开始尝试 PHP 解决方案的全部原因,因为我想知道/担心有 2 个域指向同一个托管帐户(即相同的 IP 地址)。
    • @gtr1971 我不知道你的 PHP 脚本是如何设置的(我假设在某个地方包含?),但我猜 mod_rewrite 规则可能更简单。
    • 我终于能够测试出您的解决方案并且它有效。正如你所提到的,我错过了第二个“OR”语句。一旦我把它放进去,一切都按预期工作。谢谢!
    猜你喜欢
    • 2011-07-31
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2013-01-17
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多