如何在Yii的index.php文件中获取域名(服务器名称)?我想从中检测子域名。
答案 0 :(得分:0)
CHttpRequest
是你需要的类,它封装了$ _SERVER变量;
http://www.yiiframework.com/doc/api/1.1/CHttpRequest
您需要的功能是CHttpRequest :: getBaseUrl()(不应该静态调用)
见http://www.yiiframework.com/doc/api/1.1/CHttpRequest#getBaseUrl-detail
如果应用已加载,请使用Yii::app()->getBaseUrl(true)
使用此方法代替$_SERVER
直接使CHttpRequest
解决了$_SERVER
在不同Web服务器之间的处理方式不一致的优势。
另请注意,在加载框架后,您显然可以调用Yii类;因此,当您在index.php中使用CHttpRequest时,请确保它是在加载Yii类之后;
强烈推荐你不在index.php上添加这样的逻辑 - 这个文件实际上是针对每个请求调用的;毕竟,您的子域名不会在每次请求时更改
您可以直接致电控制器或Yii::app()->getBaseUrl(true)
中的RunonceCommand
,然后使用parse_url
和explode
获取带有此
//Works for multiple subdomains like 'http://sub1.sub2.example.com' as well;
public function getSubDomain($url){
$parsedUrl = parse_url($url);
$hostPart = explode('.', $parsedUrl['host']);
$subdomains = array_slice($hostPart, 0, count($host) - 2 );
return $subdomains;
}