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