【问题标题】:http_host with and without wwwhttp_host 有和没有 www
【发布时间】:2014-09-16 20:27:49
【问题描述】:

如果要访问的域在一些已经重定向到该帐户的现有域之外,我会在 PHP 中显示一条消息。

例如,如果域是 www 或非 www,我尝试运行的命令是:

if( $_SERVER[ 'HTTP_HOST' ] != ('xxx.co.uk' && 'www.xxx.co.uk'))

但是,这似乎不起作用,就像我去 xxxx.co.uk(这是指向他们帐户的另一个域)一样,如果内容仍然没有显示。

上面显然遗漏了一些明显的东西吗?

【问题讨论】:

  • 我认为您需要在 if 语句中重复 $_SERVER['HTTP_HOST']if($_SERVER['HTTP_HOST'] != 'xxx.co.uk' || $_SERVER['HTTP_HOST'] == 'www.xxx.co.uk') 我不确定你在问什么,if the domain is www, or not www?
  • 我想你会在这里找到你要找的东西:stackoverflow.com/questions/1459739/…

标签: php conditional http-host


【解决方案1】:

试试这个用“”代替''

if( $_SERVER[ 'HTTP_HOST' ] != ("xxx.co.uk" && "www.xxx.co.uk"))

如果上面一个不起作用,试试下面一个

if( ($_SERVER[ 'HTTP_HOST' ] != "xxx.co.uk") && ($_SERVER[ 'HTTP_HOST' ] != "www.xxx.co.uk"))

【讨论】:

  • 第一个永远不会正常工作——&& 运算符不能那样工作。
【解决方案2】:

陈大卫是对的:

if ($_SERVER['HTTP_HOST'] != 'xxx.co.uk' || $_SERVER['HTTP_HOST'] == 'www.xxx.co.uk')

查看手册了解更多信息:http://php.net/manual/en/language.operators.comparison.php

【讨论】:

    【解决方案3】:

    给你。为什么不使用preg_match()

    if(!isset($_SERVER['HTTP_HOST']) || !preg_match('/^(www\.)?xxx(x)?\.co\.uk$/', $_SERVER['HTTP_HOST'])){
      header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
      die;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多