如何在Yii的index.php文件中获取域名(服务器名)?我想从它中检测到子域名。
发布于 2014-05-07 06:34:07
CHttpRequest是您需要的类,它封装了$_SERVER变量;
http://www.yiiframework.com/doc/api/1.1/CHttpRequest您需要的函数是CHttpRequest::getBaseUrl() (不应该静态调用)如果加载了应用程序,可以使用http://www.yiiframework.com/doc/api/1.1/CHttpRequest#getBaseUrl-detail调用它
使用这种方法而不是直接使用$_SERVER的优点是CHttpRequest解决了不同Web服务器之间处理$_SERVER的方式不一致的问题。
还请注意,显然可以在加载框架之后调用Yii类;因此,当在CHttpRequest中使用index.php时,确保在加载Yii类之后调用;
强烈建议您不要在index.php上添加任何这样的逻辑--这个文件实际上是针对每个请求调用的;您的子域毕竟不会在每个请求上更改。
您可以在控制器或RunonceCommand中直接调用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;
}https://stackoverflow.com/questions/23502016
复制相似问题