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,104 times, 1 visits today)

別人也看了:

支援更改 WordPress Permalink 結構的 Plugin 本格內部的 URL 結構(permalink),或是叫 URL 型式比較白話,開格以來一直是用 "/archives/%year%/%monthnum%/%day%/%hour%/%minute%/%...
裝好 WordPress 之後… 上回提到WordPress在Windows IIS的安裝,基本的安裝可以了之後,如果要公佈給你的親朋好友瀏覽,最好要作一些客製化(customization),才能更美觀有更多的功能 -- 包含 ...
使用中的 WordPress Plugin 若你對本站使用中的 plugin 有興趣的話, 參考下表. 如果你發現有的 plugin 跑起來跟本站不一樣, 那是因為我改過了... ...
Apache on Windows 本格的 Apache 跑在新主機板的 Windows Vista 上面,經過幾天運行,目前看起來 ok. 目前的 Apache 2.2.4 安裝檔,不能在 Vista 上完成安裝,有下面方法可...
幾個好用的WordPress外掛(plugin) 本站升級WordPress 3.1.3之後,可能是太久沒有接觸WordPress的世界,突然發現世界進步的真快 -- 新的佈景主題模組化,不用手動改code、新的各式各樣外掛(plugin)、更現代的...
分享:

發表迴響