2013-11-07 分類(lèi): 網(wǎng)站制作
成都網(wǎng)站制作htaccess 實(shí)現(xiàn)URL重寫(xiě)
使用 .htaccess 進(jìn)行 URL 重寫(xiě)的幾個(gè)簡(jiǎn)單方法 .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [L,QSA] # http://domain/about -> http://domain/about.php -------------------------------------------------- .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] # http://domain/about -> http://domain/index.php?q=about // $url_data is an array $url_data = explode("/",$HTTP_SERVER_VARS['PATH_INFO']);
Apache和Resin組合時(shí)UrlRewriteFilter失效的解決方法
目前在Spring3.0的官方example中都使用UrlRewriteFilter來(lái)做偽靜態(tài),單獨(dú)運(yùn)行在Resin等JavaEE Web容器中的時(shí)候一切都OK,但是一旦與Apache一起組合的時(shí)候總是會(huì)出現(xiàn)404或403錯(cuò)誤,當(dāng)然UrlRewriteFilter所設(shè)定的規(guī)則 也無(wú)效。
造成這種現(xiàn)象的原因是因?yàn)樵谀J(rèn)情況下,靜態(tài)的資源均由Apache進(jìn)行處理,而jsp或者由web.xml所映射的servlet均交給 resin進(jìn)行處理。如果web項(xiàng)目沒(méi)有使用UrlRewriteFilter則一切OK,但是使用了UrlRewriteFilter之后,由 servlet所映射的地址并不是/*即所有資源了,而是類(lèi)似/app/*這樣的設(shè)置。也就是說(shuō),用戶(hù)所請(qǐng)求的資源首先由Apache判斷一下,然后再由 選擇的交給Resin,最后才執(zhí)行UrlRewriteFilter的規(guī)則。
知道了原因,解決的方法也就出來(lái)了,只要告訴Apache將所有的資源都交由Resin來(lái)處理就可以了,可以使用Resin的servlet-mapping方法進(jìn)行配置,配置如下
htaccess 實(shí)現(xiàn)URL重寫(xiě)
1、安裝 mod_rewrite 模塊 因?yàn)?Apache 服務(wù)器默認(rèn)是沒(méi)有打開(kāi) mod_rewrite 模塊的,所以我們必須手動(dòng)來(lái)啟動(dòng)。打開(kāi) Apache 的配置文件 httpd.conf 文件,找到下面一行: #LoadModule rewrite_module modules/mod_rewrite.so 前面的 # 號(hào)是 Apache 配置文件的注釋符,也就是 Apache 服務(wù)器沒(méi)有加載該模塊。將前面的 # 號(hào)去掉,保存后重啟 Apache 服務(wù)器,這是我們就實(shí)現(xiàn)了加載 mod_rewrite 這個(gè)模塊了。(提示:任何一次對(duì) Apache 的配置文件 httpd.conf 文件都是要重新啟動(dòng) Apache 才能生效的)
2、新建 .htaccess 文件 在 windows 系統(tǒng)默認(rèn)的情況下是不能新建沒(méi)有文件名的文件的,這里建議大家使用 vim 這個(gè)編輯器來(lái)新建。方法是打開(kāi) vim 編輯器隨便輸入一段文字,然后保存為 .htaccess 即可。很多朋友因?yàn)榱?xí)慣了 windows 系統(tǒng),所以新建這個(gè)文件很頭疼。還有就是文件名一定不要錯(cuò),我今天寫(xiě)的時(shí)候把文件保存成了.htacess,看到?jīng)]有,少了一個(gè)c,怎么調(diào)試都不對(duì),還好最后發(fā)現(xiàn)了這個(gè)低級(jí)錯(cuò)誤。
3、配置 .htaccess 文件 .htaccess 文件務(wù)必放在你項(xiàng)目的根目錄下,不要放在其他文件夾下。配置 .htaccess 文件的格式如下: RewriteEngine On #這里是你的規(guī)則 解釋?zhuān)篟ewriteEngine On :?jiǎn)?dòng)URL重寫(xiě)引擎 先看如下一個(gè)配置好了的 .htaccess 文件實(shí)例: RewriteEngine On RewriteRule ^index.html$ /index.php [L] RewriteRule ^shop/(.+)/$ shop/shop.php?PRoviderId=$1 [L]
分析:上面 .htaccess 文件就寫(xiě)了二條規(guī)則。當(dāng)在瀏覽器中輸入 index.html 時(shí),后臺(tái)調(diào)用的是 index.php 文件。符號(hào)“^”是以后面的字符開(kāi)頭,相信熟悉正則表達(dá)式的朋友不會(huì)陌生吧,符號(hào)“$”是以前面的字符結(jié)尾。符號(hào)L表示停止處理接下來(lái)的規(guī)則。最后一條當(dāng)我們?cè)跒g覽器中輸入 shop/2322 時(shí),后臺(tái)調(diào)用 shop.php文件并傳遞參數(shù)provider=2322 。 配置規(guī)則,大家照著那一條去寫(xiě)吧,記得每行后面加個(gè) L 符號(hào)。
再寫(xiě)一個(gè):
http://www.cdhuace.com/category.php?id=12 想重寫(xiě)成 http://www.cdogo.net/category/12
RewriteRule ^category/([0-9]+)$ category.php?id=$1
如果有多頁(yè)的文章 如:jinyejixie.comcategory.php?id=12&page=3 重寫(xiě)成 http://jinyejixie.com/category/12/3
RewriteRule ^category/([0-9]+)/([0-9]+)$ category.php?id=$1&page=$2
如果你想升級(jí)你的站點(diǎn),又要保證老的鏈接都可用,你也可以通過(guò)mod_rewrite模塊來(lái)實(shí)現(xiàn)。你僅僅需要寫(xiě)一個(gè)規(guī)則之處這個(gè)網(wǎng)頁(yè)被永久的移動(dòng)了。例子如下:
RewriteRule ^oldpage.html$ newpage.html [R=301]
本文題目:深圳網(wǎng)站制作htaccess 實(shí)現(xiàn)URL重寫(xiě)
本文網(wǎng)址:http://jinyejixie.com/news39/19439.html
網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專(zhuān)注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)seo公司;服務(wù)項(xiàng)目有網(wǎng)站制作等
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容