白衣非少年
对于Apache:'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']您也可以HTTP_HOST代替SERVER_NAMEHerman所说的使用。有关完整讨论,请参见此相关问题。简而言之,您可能都可以使用其中任何一个。这是“主机”版本:'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']对于偏执狂/为什么重要通常,我设置为ServerName,是VirtualHost因为我希望它成为网站的规范形式。该$_SERVER['HTTP_HOST']基于请求头设置。如果服务器响应该IP地址上的任何/所有域名,则用户可能会欺骗标头,或者更糟的是,有人可能将DNS记录指向您的IP地址,然后您的服务器/网站将通过动态方式为网站提供服务建立在错误网址上的链接。如果您使用后一种方法,则还应该配置您vhost或设置.htaccess规则以强制执行您要提供服务的域,例如:RewriteEngine OnRewriteCond %{HTTP_HOST} !(^stackoverflow.com*)$RewriteRule (.*) https://stackoverflow.com/$1 [R=301,L]#sometimes u may need to omit this slash ^ depending on your server希望能有所帮助。这个答案的真正意义在于,为那些最终寻求使用apache获取完整URL的人提供第一行代码:)