深圳網(wǎng)站制作htaccess 實(shí)現(xiàn)URL重寫

2013-11-07    分類: 網(wǎng)站制作

成都網(wǎng)站制作htaccess 實(shí)現(xiàn)URL重寫

使用 .htaccess 進(jìn)行 URL 重寫的幾個(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所映射的地址并不是/*即所有資源了,而是類似/app/*這樣的設(shè)置。也就是說(shuō),用戶所請(qǐng)求的資源首先由Apache判斷一下,然后再由 選擇的交給Resin,最后才執(zhí)行UrlRewriteFilter的規(guī)則。


知道了原因,解決的方法也就出來(lái)了,只要告訴Apache將所有的資源都交由Resin來(lái)處理就可以了,可以使用Resin的servlet-mapping方法進(jìn)行配置,配置如下



htaccess 實(shí)現(xiàn)URL重寫
1、安裝 mod_rewrite 模塊 因?yàn)?Apache 服務(wù)器默認(rèn)是沒(méi)有打開 mod_rewrite 模塊的,所以我們必須手動(dòng)來(lái)啟動(dòng)。打開 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)新建。方法是打開 vim 編輯器隨便輸入一段文字,然后保存為 .htaccess 即可。很多朋友因?yàn)榱?xí)慣了 windows 系統(tǒng),所以新建這個(gè)文件很頭疼。還有就是文件名一定不要錯(cuò),我今天寫的時(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ī)則 解釋:RewriteEngine On :?jiǎn)?dòng)URL重寫引擎 先看如下一個(gè)配置好了的 .htaccess 文件實(shí)例: RewriteEngine On RewriteRule ^index.html$ /index.php [L] RewriteRule ^shop/(.+)/$ shop/shop.php?PRoviderId=$1 [L]

分析:上面 .htaccess 文件就寫了二條規(guī)則。當(dāng)在瀏覽器中輸入 index.html 時(shí),后臺(tái)調(diào)用的是 index.php 文件。符號(hào)“^”是以后面的字符開頭,相信熟悉正則表達(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ī)則,大家照著那一條去寫吧,記得每行后面加個(gè) L 符號(hào)。

深圳網(wǎng)站制作htaccess 實(shí)現(xiàn)URL重寫

瀘州網(wǎng)站建設(shè)

四川網(wǎng)站優(yōu)化排名公司

再寫一個(gè):

http://www.cdhuace.com/category.php?id=12 想重寫成 http://www.cdogo.net/category/12

RewriteRule ^category/([0-9]+)$ category.php?id=$1

如果有多頁(yè)的文章 如:muchs.cncategory.php?id=12&page=3 重寫成 http://muchs.cn/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)。你僅僅需要寫一個(gè)規(guī)則之處這個(gè)網(wǎng)頁(yè)被永久的移動(dòng)了。例子如下:

RewriteRule ^oldpage.html$ newpage.html [R=301]

當(dāng)前名稱:深圳網(wǎng)站制作htaccess 實(shí)現(xiàn)URL重寫
URL分享:http://muchs.cn/news/19439.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷seo公司;服務(wù)項(xiàng)目有網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作