【问题标题】:PHP - dynamic page via subdomainPHP - 通过子域的动态页面
【发布时间】:2010-04-14 09:23:18
【问题描述】:

我正在使用通配符 DNS 设置基于子域创建个人资料页面。

问题是,如果子域不正确,我希望它重定向到同一页面,但前面没有子域,即;

if ( preg_match('/^(www\.)?([^.]+)\.domainname\.co.uk$/', $_SERVER['HTTP_HOST'], $match)) {

$DISPLAY_NAME = $match[2];
$query = "SELECT * FROM `" . ACCOUNT_TABLE . "` WHERE DISPLAY_NAME = '$DISPLAY_NAME' AND ACCOUNT_TYPE = 'premium_account'";
$q = mysql_query( $query, $CON ) or die( "_error_" . mysql_error() );

if( mysql_num_rows( $q ) != 0 ) {



}else{

    mysql_close( $CON );
    header("location: http://www.domainname.co.uk");
    exit;

}

}

我收到浏览器错误:Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

我认为这是因为当使用header("location: http://www.domainname.co.uk"); 时,它仍然将子域放在前面,即; header("location: http://www.sub.domainname.co.uk");

有谁知道如何排序和/或有什么问题。

问候,

菲尔

【问题讨论】:

    标签: php dynamic redirect header subdomain


    【解决方案1】:

    当网页以无限循环重定向您时,就会发生这种情况。因此,您所引用的页面可能也会引发推荐(或 Firefox 认为是)。

    Mozilla knowledge base 解释了您可以针对此错误采取的措施。

    【讨论】:

    • 不确定您是否理解您的意思。我知道如果我有标题header("location: http://www.sub.domainname.co.uk"); 我会给我那个错误。我使用标头 header("location: http://www.domainname.co.uk"); 的事实是不同的,因为 if 语句将返回 false,甚至不会到达脚本的重定向部分。
    【解决方案2】:

    想出了这个。这是由于浏览器缓存造成的。

    header("Expires: Mon, 01 Jul 2003 00:00:00 GMT"); // Past date
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Consitnuously modified
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Pragma: no-cache"); // NO CACHE
    header("location: http://www.domainname.co.uk");
    

    成功了。

    【讨论】:

    • 恭喜您解决了这个问题。您是否有机会将自己的答案标记为正确,从而关闭问题?
    猜你喜欢
    • 2017-12-22
    • 2012-11-01
    • 2014-03-29
    • 2011-03-30
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多