Many applications wish to obtain parts of the URL for the current page (the hostname, the query string, etc.), and the
CHttpRequest class wraps various
$_SERVER variables to break down the URL into its constituent parts.
It's sometimes confusing to read the descriptions of each one and know exactly what it represents, so this page shows a full URL with all the parts broken out.
FULL URL -----> http://www.example.com:8080/project/index.php?r=post/view&id=123 PROPERTY hostInfo http://www.example.com:8080 port 8080 baseUrl /project url /project/index.php?r=post/view&id=123 requestUri /project/index.php?r=post/view&id=123 scriptUrl /project/index.php queryString r=post/view&id=123 scriptFile /var/www/html/project/index.php
The names on the left are the properties of
CHttpRequest, and can be accessed via
Yii::app()->request->hostInfo and the like.
A few notes:
- If the
index.phpscript is directly under the webroot, [CHttpRequest::baseUrl] will return an empty string
- Though it appears that [CHttpRequest::url] and [CHttpRequest::requestUri] return the same value, the underlying code is different and it's not clear how the differences manifest themselves (Update: in 1.1.7, the two will be the same)
- There doesn't appear to be a single method to return the entire request URL in a single step; one can concatenate [CHttpRequest::hostInfo] and [CHttpRequest::url] to achieve this