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

別人也看了:

幾個php 7跑WordPress要安裝的模組 這幾天重裝一台ubuntu server,裝了nginx、php7.0之後,要跑Wordpress或phpMyAdmin,有幾個php 7.0的模組要安裝,紀錄一下,免得忘記: sudo apt-g...
支援更改 WordPress Permalink 結構的 Plugin 本格內部的 URL 結構(permalink),或是叫 URL 型式比較白話,開格以來一直是用 "/archives/%year%/%monthnum%/%day%/%hour%/%minute%/%...
幾個好用的WordPress外掛(plugin) 本站升級WordPress 3.1.3之後,可能是太久沒有接觸WordPress的世界,突然發現世界進步的真快 -- 新的佈景主題模組化,不用手動改code、新的各式各樣外掛(plugin)、更現代的...
架設 WordPress 的一些經驗,使用 Windows XP + IIS... 曉瑩想在網路上作一些網誌(web log,簡稱blog)的時候, 我就在網路上搜尋看哪一個blog套件好用. 最先找到的是Movable Type, 也試了裝看看, 結果是可用, 但是在上傳圖片時有些...
WordPress 1.5 備份/還原的解決方案 建置部落格的人最害怕的大概有兩個 -- Blog 搬家跟資料庫毀損. 如果是用外面免費的 blog 空間, 最煩惱的就是要搬家了, 因為使用者無法進入資料庫, 也不知道資料庫的格式 (sche...
分享:

發表迴響