你(nǐ)是否曾經對一些網站(zhàn)的網址看(kàn)起來(lái)非常清爽,沒有任何.php或.html後綴感到奇怪?他(tā)們就(jiù)是這樣做到的。
1、安裝 mod_rewrite 模塊
因爲 Apache 服務器默認是沒有打開 mod_rewrite 模塊的,所以我們必須手動來(lái)啓動。打開 Apache 的配置文件(jiàn) httpd.conf 文件(jiàn),找到下面一行:
#LoadModule rewrite_module modules/mod_rewrite.so
前面的 # 号是 Apache 配置文件(jiàn)的注釋符,也就(jiù)是 Apache 服務器沒有加載該模塊。将前面的 # 号去(qù)掉,保存後重啓 Apache 服務器,這是我們就(jiù)實現了加載 mod_rewrite 這個模塊了。(提示:任何一次對 Apache 的配置文件(jiàn) httpd.conf 文件(jiàn)都(dōu)是要重新啓動 Apache 才能生(shēng)效的)
2、新建 .htaccess 文件(jiàn)
在 windows 系統默認的情況下是不能新建沒有文件(jiàn)名的文件(jiàn)的,這裡(lǐ)建議(yì)大(dà)家使用 vim 這個編輯器來(lái)新建。方法是打開 vim 編輯器随便輸入一段文字,然後保存爲 .htaccess 即可(kě)。很多朋友因爲習慣了 windows 系統,所以新建這個文件(jiàn)很頭疼。還(hái)有就(jiù)是文件(jiàn)名一定不要錯,我今天寫的時候把文件(jiàn)保存成了.htacess,看(kàn)到沒有,少了一個c,怎麽調試都(dōu)不對,還(hái)好最後發現了這個低級錯誤。
3、配置 .htaccess 文件(jiàn)
.htaccess 文件(jiàn)務必放(fàng)在你(nǐ)項目的根目錄下,不要放(fàng)在其他(tā)文件(jiàn)夾下。配置 .htaccess 文件(jiàn)的格式如(rú)下:
RewriteEngine On
#這裡(lǐ)是你(nǐ)的規則
解釋:RewriteEngine On :啓動URL重寫引擎
先看(kàn)如(rú)下一個配置好了的 .htaccess 文件(jiàn)實例:
RewriteEngine On
RewriteRule ^index\.html$ /index.php [L]
RewriteRule ^shop/(.+)/$ shop/shop.php?providerId=$1 [L]
分(fēn)析:上面 .htaccess 文件(jiàn)就(jiù)寫了二條規則。當在浏覽器中輸入 index.html 時,後台調用的是 index.php 文件(jiàn)。符号“^”是以後面的字符開頭,相(xiàng)信熟悉正則表達式的朋友不會陌生(shēng)吧(ba),符号“$”是以前面的字符結尾。符号L表示停止處理(lǐ)接下來(lái)的規則。最後一條當我們在浏覽器中輸入 shop/2322 時,後台調用 shop.php文件(jiàn)并傳遞參數provider=2322 。
配置規則,大(dà)家照(zhào)着那一條去(qù)寫吧(ba),記得(de)每行後面加個 L 符号。
再寫一個:
http://www.yourdomin.com/category.php?id=12 想重寫成 http://www.yourdomin.com/category/12
RewriteRule ^category/([0-9]+)$ category.php?id=$1
如(rú)果有多頁的文章(zhāng) 如(rú):http://www.yourdomin.com/category.php?id=12&page=3 重寫成 http://www.yourdomin.com/category/12/3
RewriteRule ^category/([0-9]+)/([0-9]+)$ category.php?id=$1&page=$2
如(rú)果你(nǐ)想升級你(nǐ)的站(zhàn)點,又要保證老的鏈接都(dōu)可(kě)用,你(nǐ)也可(kě)以通過mod_rewrite模塊來(lái)實現。你(nǐ)僅僅需要寫一個規則之處這個網頁被永久的移動了。例子如(rú)下:
RewriteRule ^oldpage.html$ newpage.html [R=301]
【轉載自(zì):http://www.cnblogs.com/wangkongming】
【長短(duǎn)地址轉換】
利用URL重寫,我們可(kě)以很方便地實現長短(duǎn)地址的轉換,但(dàn)是用重定向就(jiù)不合适了。
RewriteEngine On
RewriteRule ^grab /public/files/download/download.php
若訪問(wèn)
http://mysite/grab?file=my.zip
則會執行該頁面:
http://mysite/public/files/download/download.php?file=my.zip
【去(qù)掉www】
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
【加上www】
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule (.*) http://www\.%1/$1 [R=301,L]