利用 Apache Mode Rewrite 微痛轉換 MovableType 到 pLog

許多由 MovableType 轉換到 pLog 的網友都會遇到一個問題:我該怎麼保有原本的靜態連結(permanant link)呢?原因有兩個,一個是別的 blog 會利用靜態連結來連結到文章,另一個則是搜尋引擎會記得原本的網址,如果沒有辦法保留的話,對於網站的點閱率會有很大的影響。

這個問題可以利用 ApacheRewrite 模組來解決。本篇文章將以義氣愛智網為例來說明如何達成。

步驟:

1. 請先用 MTtoPlog 程式將您的文章轉換到 pLog 格式,轉換時並請按照步驟七保留 pLog 中現存的文章編號。

*注意* 若是沒有保存現有的文章編號,本篇的內容並不適用。

2. 確認您的 blogId;例如在 pLog system 中義氣愛智網是編號為 1 。

3. 確認您的 plog 安裝網址。例如說,義氣愛智網的安裝網址為 http://ai.yichi.org/ ,並不含子目錄;而沛斯特文集 https://pesty.yichi.org/plog/ 有子目錄 /plog,這兩種方式在隨後的 Rewrite Rules 並不同,本篇只考慮 *不含子目錄* 的狀況。

4. 確認您的 Apache Mod_Rewrite。檢查方式最簡單的就是,在 pLog 中啟用"讓搜尋引擎易於搜尋的簡潔網址"看看能不能正常運作即可。

5. 依序修改置於 plog system(亦即安裝目錄)下的 .htaccess 如下:

5.1. 在 後一行加入 RewriteEngine on
5.2. 在最前面的 RewriteRule 最前面加入:

# MT style archives URL /archives/000018.php or 000018.html
RewriteRule ^archives/([0-9]+).(php|html)$ /post/1/$1 [R=301]

# MT style archives URL /archives/cat_robotics.php
RewriteRule ^archives/cat_(.+).(php|html)$ /category/1 [R=301]

# MT style monthly archives URL /archives/2003_06.php
RewriteRule ^archives/([0-9]{4})_([0-9]{2}).(php|html)$ /archives/1/$1$2 [R=301]

    *注意* 若您的 blogId 並非 1, 請把每個 RewriteRule 作對應修改,例如, 若 blogId 為 2, 第一個要由 /post/1/$1 改成 /post/2/$1

5.3. 為了讓原本使用 MT RSS feed 的網友不需要轉換就可以直接看到新的 plog RSS feed,加入下列 Rule:

# MT rdf file
RewriteRule ^index.(rdf|xml)$ /rss/rss090/1 [R=301]

    *注意* 若您的 blodId 為 2, 請改為 /rss/rss090/2

6. 把 .htaccess 上傳覆蓋掉原本的檔案,測試是否能正常運作。

理論上,當瀏覽器收到 301 的重新導向之後,就會自動把網址轉為新的。所以包括使用者看到的網址、還有搜尋引擎的 bots,都會隨之更改。

目前還沒有辦法轉換的是分類的 archives;理論上可以利用 RewriteMap 達成,但因為這部份需要動到 Apache 本身的設定檔,所以暫時不予以轉換。

相關資料:

Advertisements