如何在Yii索引文件中获取servername

时间:2014-05-06 18:15:57

标签: php yii

如何在Yii的index.php文件中获取域名(服务器名称)?我想从中检测子域名。

1 个答案:

答案 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_urlexplode获取带有此

的子域名
//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;
}