如何获取主机地址?例如,我的站点位于此处:http://example.org/index/news/ 并且我只想提取http://example.org/。
我问ZF功能。我知道 $_SERVER['HTTP_HOST'] 但我正在寻找本地的东西。
如何获取主机地址?例如,我的站点位于此处:http://example.org/index/news/ 并且我只想提取http://example.org/。
我问ZF功能。我知道 $_SERVER['HTTP_HOST'] 但我正在寻找本地的东西。
从控制器:
$this->getRequest()->getServer('HTTP_HOST')
那会给你example.org
,其余的你必须在它周围添加。
接受的答案非常好,但您可能需要记住一些事情。
$this->getRequest();
是一个函数/方法调用,这意味着不必要的开销,因为控制器具有受保护的$_request
属性,所以
$this->_request
该getRequest
方法只不过是暴露$_request
属性(它是一个公共方法):
public function getRequest()
{
return $this->_request;
}
应该稍微提高性能。此外,如果您查看该getServer
方法的来源:
public function getServer($key = null, $default = null)
{
if (null === $key) {
return $_SERVER;
}
return (isset($_SERVER[$key])) ? $_SERVER[$key] : $default;
}
除了语法糖之外,在不提供默认值的情况下使用该方法确实没有意义。
最快的方法永远是
$_SERVER['HTTP_HOST'];
然而,结合两全其美,最安全(也是最类似于 ZF 的方式)将是:
$this->_request->getServer('HTTP_HOST', 'localhost');//default to localhost, or whatever you prefer.
您正在寻找的完整代码可能是:
$base = 'http';
if ($this->_request->getServer('HTTPS', 'off') !== 'off')
{
$base .= 's';
}
$base .= '://'.$this->_request->getServer('SERVER_NAME', 'localhost').'/';
在您的情况下,这应该导致http://expample.org/
.
请参阅此处以获取您可以获得的服务器参数的完整列表,它们的含义以及值可能是什么......