是否有可能确定“www."是作为URL的一部分完全从PHP输入到地址栏


Is it possible to determine whether "www." was entered as part of the URL into address bar purely from PHP?

访问浏览器中没有"www "对应的网站,

$_SERVER['SERVER_NAME'];

这似乎不是什么大问题,只需在进行ajax调用时在前端确定它,使用类似location的东西。href ,对吧?

或者直接从SERVER_NAME中删除"www."。很好的解决方案,但没有解决主要问题。现在PHP代码必须依赖JavaScript?后端不应该能够确定是www vs否www地址吗?

此外,当您有

时,更不用说PHP 生成必须调用服务器的代码,使用$_SERVER['SERVER_NAME']的解决方案将产生跨域安全错误。

那么——问题是——PHP中是否有一种方法可以自动确定www。部分是否作为域名的一部分输入到浏览器的地址栏?

这样做的问题是,现在您的服务器端PHP代码依赖于JavaScript,有时可能在浏览器中禁用。一般来说,这听起来很尴尬。

这是完全可能的。

<?php 
    //Will be true if www. exists, and false if not. 
    $host_has_www = (strpos($_SERVER['HTTP_HOST'], 'www.') !== false) ? true : false;
    if ($host_has_www == true) { 
      //Do something
    }
?>

强制www edit .htaccess

RewriteCond %{HTTP_HOST} !^www'.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

则每个请求将始终有WWW或使用类似的方法删除WWW