RewriteRule仿靜態連結
Temperature: 0 °C
前幾天寫了關於404頁面導向位置的定義。Url link
同樣的是要定義.htaccess 這次是要將網址改變....
一般來說用PHP寫程式時通常都會用:
$_POST 或者是 $_GET
來傳遞變數。
當系統越寫越龐大,傳遞的變數變多,就有可能產生如以下連結:
例如 http://demo.com/index.php?list=detail&id=88
若我不想使用這麼長的網址? 那該如何處理? 這時就得修改定義.htaccess檔了
但首先需先確定Apache裡的設定
修改 Apache 中的 http.conf
然後搜尋並將下行前的注解【#】拿掉
#LoadModule rewrite_module modules/mod_rewrite.so
再搜尋 http.conf 中 AllowOverride None 的語句,然後將其改為 AllowOverride All
再重新啟動 Apache
接著定義.htaccess
RewriteEngine on
RewriteRule ([a-zA-Z]+)-([0-9]+).html$ index.php?list=$1&id=$2
當定義好.htaccess檔之後一樣的將檔案上傳至網站空間,之後只要將網址繕寫為
http://demo.com/detail-88.html
即可將網址指向http://demo.com/index.php?list=detail&id=88
像這樣短網址靜態頁面的好處:
一開始想到的是網址變短了...對使用者來說就友善些。
另外,網路上聽說是有利於SEO啦...
所以我也將這樣的方式套用在innstory裡。
RewriteEngine On :將重寫引擎設為 On
RewriteRule:重寫網址規則
([0-9]+): 表示參數值為數字
([a-z]+): 表示參數值為英文
(.*) : 表示參數萬用字元(可接受中文字)
另外,尾部參數規則:
[NC] (不分字母大小寫)
[NE] (不再輸出轉義特殊字符)
[OR] (或者, 用來與下一規則連結用)
[R] 重新導向
[F] 重新導向到 403 forbidden 頁面
[G] 重新導向到 410 forbidden 頁面
[P] 強制使用代理
[N] 重新從第一條規則開始運行
[L] 表示這是最後一條規則
台北市松山區八德路四段650號 Go