目前連結我們部落格應用程式各個頁面的網址看起來很醜陋。例如,顯示文章頁面的網址看起來像這樣
/index.php?r=post/show&id=1&title=A+Test+Post
在本節中,我們將說明如何美化這些網址,使其更符合 SEO 規範。我們的目標是在應用程式中使用以下網址
/index.php/posts/yii
:導向顯示標籤為 yii
的文章列表頁面;/index.php/post/2/A+Test+Post
:導向顯示 ID 為 2,標題為 A Test Post
的文章詳細資訊頁面;/index.php/post/update?id=1
:導向允許更新 ID 為 1 的文章頁面。請注意,在第二種網址格式中,我們將文章標題包含在網址中。這主要是為了使網址更符合 SEO 規範。據說搜尋引擎在建立索引時,也可能會參考網址中找到的文字。
為了實現我們的目標,我們將 應用程式配置 修改如下:
return array(
......
'components'=>array(
......
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'post/<id:\d+>/<title:.*?>'=>'post/view',
'posts/<tag:.*?>'=>'post/index',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
),
);
在上述配置中,我們配置了 urlManager 元件,將其 urlFormat
屬性設定為 path
,並加入一組 rules
。
這些規則供 urlManager
用於解析和建立所需格式的網址。例如,第二條規則表示,如果請求網址 /index.php/posts/yii
,則 urlManager
元件應負責將請求分派到 路由 post/index
,並產生一個值為 yii
的 tag
GET 參數。另一方面,當使用路由 post/index
和參數 tag
建立網址時,urlManager
元件也會使用此規則來產生所需的網址 /index.php/posts/yii
。因此,我們說 urlManager
是一個雙向網址管理器。
urlManager
元件可以進一步美化我們的網址,例如在網址中隱藏 index.php
,在網址中附加諸如 .html
之類的後綴。我們可以透過在應用程式配置中配置 urlManager
的各種屬性來輕鬆獲得這些功能。如需更多詳細資訊,請參閱 指南。
發現錯字或您認為此頁面需要改進嗎?
在 github 上編輯 !
文章標題
若要使用 "/post/id/title" 結構描述,請確保您將需要的變數傳遞給 createUrl 方法。您可以透過在相關連結上使用此程式碼來做到這一點
Yii::app()->createUrl('post/view', array( 'id'=>$this->id, 'title'=>$this->title, ));
管理網址結構描述的智慧、更簡潔、可維護的方式是為每個需要自訂網址結構描述的模型定義一個 getURL() 方法,如下所示
public function getUrl() { return Yii::app()->createUrl('post/view', array( 'id'=>$this->id, 'title'=>$this->title, )); }
並專門使用 getUrl 方法(例如:this->Url 或 MyModel::Url)來取得並在您的檢視中顯示連結。
此外,如果您想要真正的 SEO 友善網址,您必須將 apache 的 URL REWRITE 與 'urlManager' 一起使用。
註冊 或 登入 以進行評論。