Apache-Url-Rewriting
相信有不少寫PHP程式的人會有跟我一樣的困擾,那就是使用 $_POST 或 $_GET 的時候
所寫出來的網址都像這樣:
http://aidec.tw/look.php?action=8&post=5 (此網址是瞎掰的)
這樣結構的網址實在是對SEO沒啥幫助且對讀者來說也十分的不好記
因此許多人會利用Apache的 URL-Rewriting 來重新寫網址結構
但是筆者發現到從搜尋引擎中關於URL重寫的文章,很多都不知道在寫甚麼不然就是出現語法根本不能用的情形
因此在筆者從眾多的文章中一一的測試,終於讓我測試出來了(感動…)
若您也是跟我一樣有此困難的話,那就參考下面的文章吧(高手請無視…)
首先 創建一個 .htaccess 的文件 或者是修改 .htaccess文件
假設原本網址只有一個參數如下:
http://aidec.tw/look.php?action=a
則在文件中加入
RewriteEngine On
RewriteRule ^([a-z]+)\.html$ look.php?action=$1 [L,NC]
修改後的網址,會變成
http://aidec.tw/a.html
若假如原本網址有兩個參數:
http://aidec.tw/look.php?action=1&post=艾德克工作室
則在文件中加入
RewriteEngine On
RewriteRule ^([0-9]+)-(.*)\.html$ look.php?action=$1&post=$2 [L,NC]
修改後的網址,會變成
http://aidec.tw/1-艾德克工作室.html
說明:
RewriteEngine On :將重寫引擎設為 On
RewriteRule:重寫網址規則
([0-9]+): 表示參數值為數字
([a-z]+): 表示參數值為英文
(.*) : 表示參數萬用字元(可接受中文字)
以下方範例網址來說:
http://aidec.tw/look.php?action=1&post=艾德克工作室
RewriteRule ^([0-9]+)-(.*)\.html$ look.php?action=$1&post=$2 [L,NC]
action=$1 對應 ([0-9]+)
post=$2 對應 (.*)
最後面的參數解釋
[NC] (不分字母大小寫)
[NE] (不再輸出轉義特殊字符)
[OR] (或者, 用來與下一規則連結用)
[R] 重新導向
[F] 重新導向到 403 forbidden 頁面
[G] 重新導向到 410 forbidden 頁面
[P] 強制使用代理
[N] 重新從第一條規則開始運行
[L] 表示這是最後一條規則
RewriteRule規則表示式:
. 任何單一字母
? 0個或是1個字母
* 0個或是N個字母
+ 1個或是N個字母
^ 表示一行的開始
$ 表示一行的結束
\ 跳脫字元(顯示符號本身)
很抱歉,此文章關閉留言