默認網站訪問路徑如下所示:
http://127.0.0.1:8080/zuizen/index.php?r=admin/UserInfo/admin
這種路徑對搜索引擎不友好,需要改成如下形式:
http://127.0.0.1:8080/zuizen/admin/UserInfo/admin.html
以下步驟實現以上要求:
1) 修改Apache配置,使其支持重寫:
打開Apache配置文件httpd.conf:開啟apache的mod_rewrite模塊:
去掉LoadModule rewrite_module modules/mod_rewrite.so前的“#”符號
確保<Directory "D:/var/www/html"></Directory>中有“AllowOverride All”
重啟Apache。
2) 修改Yii網站配置:
在項目中的/protected/config/main.php中找到components 下的urlManager,將其修改為:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(),
'showScriptName'=>false,
'urlSuffix'=>'.html',
),
urlFormat設置path:默認值為get,即在url中通過get參數r來表示請求的資源(/path/to/EntryScript.php?name1=value1&name2=value2...)。path則通過路徑形式表示:
( /path/to/EntryScript.php/name1/value1/name2/value2...)。
showScriptName設置為false:在url 中不出現入口文件“/index.php”,此時需要設置web 服務器的轉發規則,將不能明確資源位置的請求均轉發至入口文件。
rules設置了action的參數映射模式,用正則表達式來表示,具體參閱 CUrlManager
3) 為網站添加重寫權限:
在與網站根目錄index.php文件同級目錄下添加文件“.htaccess”,內容如下:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
4) 現在即可使用所需路徑格式訪問了。