【问题标题】:$_SERVER['HTTP_HOST'] shows only domain name without www$_SERVER['HTTP_HOST'] 只显示没有 www 的域名
【发布时间】:2012-06-04 14:09:48
【问题描述】:

即使在 url 我写“www.”,$_SERVER['HTTP_HOST'] 也只有 domain.com 没有“www.”

因此,我无法从非 www 重定向到 www。如何解决这个问题?

      ["HTTP_HOST"]=>
      string(8) "ca-fi.ru"
      ["HTTP_COOKIE"]=>
      string(120) "d7b6b86aae18e551749a9da9d54f3daf=floar2lr37318dc76ask49bii5; 849c6485c12558d081c065b4d94a566b=d9iqj8s6oqo41kipg3qaefq497"
      ["HTTP_USER_AGENT"]=>
      string(99) "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5"

      ["PATH"]=>
      string(28) "/usr/local/bin:/usr/bin:/bin"
      ["SERVER_SIGNATURE"]=>
      string(69) "
    Apache/2.2.20 (Ubuntu) Server at ca-fi.ru Port 80

    "
      ["SERVER_SOFTWARE"]=>
      string(22) "Apache/2.2.20 (Ubuntu)"
      ["SERVER_NAME"]=>
      string(8) "ca-fi.ru"
      ["SERVER_ADDR"]=>
      string(13) "192.168.10.12"
      ["SERVER_PORT"]=>
      string(2) "80"
      ["REMOTE_ADDR"]=>
      string(12) "192.168.10.1"
      ["DOCUMENT_ROOT"]=>
      string(8) "/var/www"

      ["REQUEST_METHOD"]=>
      string(3) "GET"

      ["REQUEST_URI"]=>
      string(1) "/"
      ["SCRIPT_NAME"]=>
      string(10) "/index.php"
      ["PHP_SELF"]=>
      string(10) "/index.php"
      ["REQUEST_TIME"]=>
      int(1338819407)

【问题讨论】:

  • 你是在做 echo 还是 $var = ...;你要给我们看什么?
  • $_SERVER['HTTP_HOST'] 使用客户端发送的 Host 标头进行设置。如果你在http://www.domain.com/,主机头必须包含www部分,因为浏览器会发送它。
  • 无法添加 var_dump,因为“您的帖子没有太多上下文来解释代码部分;请更清楚地解释您的场景。”
  • CodeCaster,他们会有,但没有
  • 鉴于@Jeroens 的回答和您在那里的评论,您似乎已经有了一个重定向。如果您的 .htaccess 执行重定向到您网站的非 www 主机,那么您的答案就是。

标签: php apache


【解决方案1】:

如果你只是想从非 www 重定向到 www,我建议不要使用 PHP 的 header() 函数(我假设你正在使用),而是使用 mod rewrite

在你的根目录中创建一个.htaccess 文件,内容如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 

【讨论】:

  • 你启用了 mod_rewrite 吗?您是否已将 example.com 替换为您的域名?
  • 如果我尝试这个我得到错误 310 (net::ERR_TOO_MANY_REDIRECTS): 重定向太多
  • 我试图找出问题所在,但不知道...我认为这都是因为 $_SERVER['HTTP_HOST'] 中缺少 www,但无法解决此问题
猜你喜欢
  • 2018-05-23
  • 2015-08-09
  • 2014-09-16
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2017-07-06
  • 2011-11-05
相关资源
最近更新 更多