技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

Apache網(wǎng)站.htaccess實(shí)現(xiàn)rewrite重寫失敗的三個(gè)原因

作者:admin    時(shí)間:2018-2-2 15:53:4    瀏覽:

今天想使用.htaccess實(shí)現(xiàn)一個(gè)rewrite重寫功能,誰知照搬其他網(wǎng)站的.htaccess過來后連網(wǎng)站都訪問不了了,于是研究下使用Apache服務(wù)器的網(wǎng)站是如何用.htaccess實(shí)現(xiàn)rewrite重寫的,此文記錄的是本人的一點(diǎn)心得,對(duì)新手具有參考作用。

原因一:沒有啟用 rewrite_module

首先檢查是否啟用了 rewrite_module 。如何啟用?打開 httpd.conf 文件,此文件在Apache的安裝目錄下。

對(duì)于windows系統(tǒng),默認(rèn)安裝路徑是:

C:\Program Files\Apache Software Foundation\Apache2.2\conf

對(duì)于Linux系統(tǒng),可通過 find 命令來搜索:

find / -name httpd.conf

然后把 #LoadModule rewrite_module 前面的 # 號(hào)去掉即可。

啟用rewrite_module

啟用rewrite_module

最后不要忘了重啟Apache,以使更改生效。

原因二:.htaccess沒有RewriteEngine On

要.htaccess支持rewrite重寫,必須要在前面寫上一句:

RewriteEngine On

否則,.htaccess里的 RewriteRule 語句是無效的。

RewriteEngine On 不能少

RewriteEngine On 不能少

溫馨提示:更改.htaccess后立即生效,無需重啟Apache服務(wù)器。

原因三:正則表達(dá)式寫法錯(cuò)誤

除了上述的兩個(gè)原因外,如果 RewriteRule 的正則表達(dá)式有誤,也會(huì)導(dǎo)致 rewrite 重寫失敗。因此你需要確保你的正則寫法無誤。你可以寫一個(gè)最簡單的 RewriteRule 測(cè)試一下重寫功能是否有效。如本案例寫的:

RewriteRule ^test/index.html$ /index.html

意思是訪問 /test/index.html 時(shí)會(huì)跳到 /index.html ,跳轉(zhuǎn)成功則表示重寫功能有效。

最后附上一條對(duì)URL重寫的實(shí)例,供大家參考學(xué)習(xí):

RewriteRule ^article/([^/]+)/([^/]+)/([^/]+)/(.*)$ /article.php?issue=$1&edition=$2&id=$3&title=$4 [L,QSA,NC]

這條語句可以對(duì)URL

/article.php?issue=1&edition=leeds&id=1394216062&title=apache-falls-to-be-started

進(jìn)行重寫

/article/1/leeds/1394216062/apache-falls-to-be-started

解釋:

L : last,表示已是最后一條規(guī)則,.htaccess文件解析將退出。

QSA : query string append,表示追加請(qǐng)求串,此標(biāo)記強(qiáng)制重寫引擎在已有的替換串中追加一個(gè)請(qǐng)求串,而不是簡單的替換。 如果需要通過重寫規(guī)則在請(qǐng)求串中增加信息,就可以使用這個(gè)標(biāo)記。

NC : no case,不區(qū)分大小寫,忽略大小寫。

R : redirect,重定向。

F : forbidden,禁止訪問。

您可能對(duì)以下文章也感興趣

標(biāo)簽: apache  htaccess  rewrite  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */