偏好網址(Canonical URLs)

因為各種原因,我們可能會讓多個不同網址,連接到幾乎相同或者完全相同的頁面,像是列舉某個種類的文章列表。這件事情對使用者來說幾乎沒有影響。但是對於搜尋引擎來說,這還是有些問題。因為可能會導致錯誤的網址出現在搜尋結果內,甚至最差的情況下,會被搜尋引擎認為是違規行為而被懲罰。

其中一個解決方法,是標記其中一個網址為偏好網址(Canonical URLs),也就是主要的網址。我們可以在網頁標頭使用<link rel="canonical"標籤來達成這個目標。

備註:這邊假設已經啟用pretty URLs功能

現在,假設我們有兩個網址:

  • http://example.com/item1
  • http://example.com/item2

這兩個網址的內容幾乎是一樣的。

我們的目標是把第一個網址設置成偏好網址。另一個網址還是能讓使用者連結。這邊的程序跟「加入搜尋引擎最佳化標籤 」的方式類似。只是變成加入<link rel="canonical" href="http://example.com/item1">

要在控制器(controller)裡面加入該標籤,我們使用的程式碼如下:

\Yii::$app->view->registerLinkTag(['rel' => 'canonical', 'href' => Url::to(['item1'], true)]);

要在視圖(view)裡面加入該標籤,我們使用的程式碼如下:

$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::to(['item1'], true)]);

備註:這邊必須使用絕對路徑,不可以使用相對路徑。

除了用Url::to(),我們也可以用Url::canonical()

$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]);

上面的程式碼也可以加在layout裡面。Url::canonical()會根據現在的控制器以及傳入action的參數(有出現在method signature內的),生成對應的網址。

1. 其他資料

results matching ""

    No results matching ""