WordPress Permalink 與 IIS 用的 ISAPI_rewrite

本篇屬進階功能,適用於裝好WordPress又想挖掘出新功能的人使用.

WordPress 裡有個東西叫做 Permalink, 它是 permanent link 的縮寫. What is that? 簡單的來說它是為了要讓URL看起來更漂亮更易懂, 例如, 如果有一篇文章,它的 URL 是
https://blog.gspirits.org/wp/index.php?p=21

https://blog.gspirits.org/wp/archives/2005/03/26/DECT數位無線電話/
哪一個容易懂? 當然是後者,一眼就可以看出是 2005 年 3 月 26 日的文章, 標題是”DECT數位無線電話” 😎
不過,很可惜,那只適用於英文篇名,而我們寫的文章篇名通常是中文的,會有問題. 所以,另一個方式是使用下面的格式,
https://blog.gspirits.org/wp/archives/2005/03/26/20/53/24/
也就是說,文章在 2005 年 3 月 26 日 20 時 53 分 24 秒發表,仍然比 index.php?p=21 好多了. 本blog就是用這個方式.

哦? 就這樣? 沒什麼用嘛… 也許你會這樣想. 它之所以被發展出來是有道理的,理由如下:

  1. 第一個原因如上
  2. 搜尋引擎似乎不喜歡參數,如果它搜尋時忽略掉連結中的參數,那你的網站對搜尋引擎會是一片空白. 不過,據我的觀察, google似乎沒這個問題.
  3. 使用者可直接在 URL 上作修改, 就可以瀏覽你的網站, 而不必進到畫面再點選. 例如,
    看 2005 年 3 月 的文章
    https://blog.gspirits.org/wp/archives/2005/03/
    看 2005 年 3 月 20 日的文章
    https://blog.gspirits.org/wp/archives/2005/03/20/
    也是很 cool.

當然這些對我們小小的blog是功用不大, 所以我在前一篇才說這不是必要的功能. 但這個對大型的網站,尤其是購物網站,就非常有用了.

要使用這個功能要有一個URL rewrite的模組,Apache web server有內建的 mod_rewrite 模組,但是 IIS 的用戶可就沒那麼幸運了(該死的Microsoft :mad:),還好有一家叫作Helicon Tech的公司設計了同樣功能的產品,更好的是Lite版本是免費的,在這裡可下載.

這個東西就是將 URL 依據規則(Rule) 重新改寫,而這其中最重要的就是這些規則了,這些規則決定了如何將網頁伺服器應用程式的語法與呈現給用戶看的 URL 作翻譯. 規則本身很難懂,又是一堆外星文,我是參考了這個仁兄這個仁兄的例子完成的,如下:

# WordPress rewrite rules
RewriteRule /wp/archives/category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp/wp-feed.php\?category_name=$1&feed=$2 [I,U,O]
RewriteRule /wp/archives/category/?(.*)/ /wp/index.php\?category_name=$1

RewriteRule /wp/archives/author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp/wp-feed.php\?author_name=$1&feed=$2 [I,U,O]
RewriteRule /wp/archives/author/?(.*) /wp/index.php\?author_name=$1 [I,U,O]

RewriteRule /wp/feed/?([_0-9a-z-]+)?/?$ /wp/wp-feed.php\?feed=$1 [I,U,O]

RewriteRule /wp/archives/([0-9]{4})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]+)?/?$ /wp/index.php\?year=$1&monthnum=$2&day=$3&hour=$4&minute=$5&second=$6&page=$7 [I,U,O]
RewriteRule /wp/archives/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$ /wp/wp-feed.php\?year=$1&monthnum=$2&day=$3&hour=$4&minute=$5&second=$6&feed=$7 [I,U,O]
RewriteRule /wp/archives/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,2})/([0-9]{1,2})/trackback/?$ /wp/wp-trackback.php\?year=$1&monthnum=$2&day=$3&hour=$4&minute=$5&second=$6 [I,U,O]

這些東西要寫在 C:\Program Files\Helicon\ISAPI_Rewrite\httpd.ini 裡.

基本上前面的是 regular expression 後面是 format string. 看不懂? 我也不懂 😀 想知道詳情,請看ISAPI_rewrite的document… 如果你都做對了,在管理畫面Options的Permalinks中,structure用/archives/%year%/%monthnum%/%day%/%hour%/%minute%/%second%/, update存起來,恭喜你,你的blog就有Permalink的功能了!

UPDATE 4/26/2005

本Blog的網頁伺服器已經換成Apache了,WordPress會自動產生rewriterule,不用維護上面的東西了.

(Visited 9,113 times, 1 visits today)

別人也看了:

使用中的 WordPress Plugin 若你對本站使用中的 plugin 有興趣的話, 參考下表. 如果你發現有的 plugin 跑起來跟本站不一樣, 那是因為我改過了... ...
架設 WordPress 的一些經驗,使用 Windows XP + IIS... 曉瑩想在網路上作一些網誌(web log,簡稱blog)的時候, 我就在網路上搜尋看哪一個blog套件好用. 最先找到的是Movable Type, 也試了裝看看, 結果是可用, 但是在上傳圖片時有些...
Apache on Windows 本格的 Apache 跑在新主機板的 Windows Vista 上面,經過幾天運行,目前看起來 ok. 目前的 Apache 2.2.4 安裝檔,不能在 Vista 上完成安裝,有下面方法可...
裝好 WordPress 之後… 上回提到WordPress在Windows IIS的安裝,基本的安裝可以了之後,如果要公佈給你的親朋好友瀏覽,最好要作一些客製化(customization),才能更美觀有更多的功能 -- 包含 ...
升級WordPress 3.2,又出問題 前不久本站升級Wordpress 3.1.3,今天看到訊息通知又出了Wordpress 3.2正式版,手癢試試新版的自動升級,就給它按下去,幾秒鐘就完成了,沒有錯誤。 試了一些功能,好像ok.....
分享:

發表迴響