http://www.blogger.com/post-create.g?blogID=27977601
舉個簡單的例子,如果我們想把網址中的副檔名 php 改成 htm。
開啟 http://localhost/test.htm 實際上是連到 http://localhost/test.php
實作步驟如下:
- 檢察 apahce 的 httpd.conf 這一行是否開啟 :
LoadModule rewrite_module modules/mod_rewrite.so
- 在你要改寫 URL 的檔案資料夾中,放入一個檔案取名為 .htaccess,寫入以下內容,這樣就算是完成了,不必重新啟動 apache
RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.php [nc]
$1 表示使用 RewriteRule 的第一個 Regular Expression (是否就是指 ^(.*)\.htm$ 這段?)
[nc] 代表 not case sensitive (大小寫視為相同)
------------------------------
還有其他比較複雜的範例 ,如果你也像我一樣不熟悉正規表達式,可以直接拿這些例子修改 :
1) 網址 product-12.html => 實際路徑 product.php?id=12
RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1
2) 網址 product/ipod-nano/12.html => 實際路徑 product.php?id=12
RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2
3) 把不含 www 的 URL 加上 www (http://test.com/ => http://www.test.com/)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^optimaxwebsolutions\.com$
RewriteRule (.*) http://www.optimaxwebsolutions.com/$1 [R=301,L]
4) 網址 yoursite.com/xyz => 實際路徑 yoursite.com/user.php?username=xyz
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1
5) 把某個資料夾的路徑,改連到另一個資料夾底下
假設你要翻新整個網站 root 資料夾中的內容,你可以先在 root 資料夾的裡面開一個 new 資料夾,在 root/new 裡面編輯新的網頁。然後使用以下的 rewrite rule 把 http://root/ 指向 http://root/new/
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*) /new/$1
------------------------------
參考文章來源 :
Hide .php extension with url rewriting using .htaccess
5 useful url rewriting examples using .htaccess
石頭閒語-Regular Expression (RegExp) in JavaScript
這篇文章很詳細!!爬文爬了很久才看到
回覆刪除是否可以轉載?謝謝
抱歉很久沒來管裡留言,歡迎轉載
刪除謝謝囉
回覆刪除您好:
回覆刪除我有個需求不知是否可以透過 .htaccess 達成
就是基於安全考量我希望網站的真實路徑不要洩漏
是否有可能做到....
將網址
https://www.abc.com/xxx/...../.....
改為
https://www.abc.com/zzz/...../.....
但我實際上卻沒有將xxx資料夾更名卻又可正常運作呢?