apache下的htaccess偽靜態(tài)文件

此文章轉(zhuǎn)載~


Apache偽靜態(tài)(Rewrite).htaccess文件詳解

Htaccess(超文本訪問)是一個簡單的配置文件,它允許設(shè)計師,開發(fā)者和程序員通過它來改變Apache Web服務(wù)器的配置。

這些功能包括用戶重定向、URL重寫(url rewrite,國內(nèi)很多稱為偽靜態(tài))、目錄密碼保護(hù)。

現(xiàn)在我們開始——

1 建立并上傳一個.htaccess文件

建立一個.htaccess文件很簡單,我們使用一個類似windows的記事本或者notpad++都可以,然后把"自動換行"功能關(guān)閉,然后寫入一些字后保存文件。

比如,我們可以起名為:

htaccess.txt

上傳到Web服務(wù)器上的相關(guān)目錄的文件,然后重新命名:

.htaccess

記住.htaccess文件應(yīng)當(dāng)使用644權(quán)限,并以ASCII模式上傳。如果.htaccess文件,那么應(yīng)該聯(lián)系系統(tǒng)管理員或托管公司,并確保他們已啟用.htaccess文件。

如果想在本地Apache開啟.htaccess,可按以下步驟進(jìn)行:

其實只要修改一下apache目錄下的httpd.conf文件,我們用文本編輯器打開后,把以下行去掉注釋

LoadModule rewrite_module modules/mod_rewrite.so

然后查找:

Options FollowSymLinks
AllowOverride None

改為

Options FollowSymLinks
AllowOverride All

記得修改完httpd.conf保存以后,一定要重啟Apache服務(wù)器才可生效。

2|.httacces文件的配置

2.1.配置.htaccess 自定義錯誤頁

我要介紹的.htaccess的第一個應(yīng)用是自定義錯誤頁面,這將使你可以擁有自己的、個性化的錯誤頁面(例如找不到文件時),而不是你的服務(wù)商提供的錯 誤頁或沒有任何頁面。這會讓你的網(wǎng)站在出錯的時候看上去更專業(yè)。你還可以利用腳本程序在發(fā)生錯誤的時候通知你(例如我使用Free Webmaster Help的PHP腳本程序,當(dāng)找不到頁面的時候自動e-mail給我)。

你所知道的任何頁面錯誤代碼(像404找不到頁面),都可以通過在.htaccess文件里加入下面的文字將其變成自定義頁面:

ErrorDocument errornumber /file.html

舉例來說,如果我的根目錄下有一個nofound.html文件,我想使用它作為404 error的頁面

ErrorDocument 404 /notfound.html

如果文件不在網(wǎng)站的根目錄下,你只需要把路徑設(shè)置為:

ErrorDocument 500 /errorpages/500.html

以下是一些最常用的錯誤:

常用的客戶端請求錯誤返回代碼:

400 - Bad request 錯誤請求

401 Authorization Required需要驗證

403 Forbidden禁止

404 Not Found找不到頁面

405 Method Not Allowed

408 Request Timed Out

411 Content Length Required

412 Precondition Failed

413 Request Entity Too Long

414 Request URI Too Long

415 Unsupported Media Type

常見的服務(wù)器錯誤返回代碼:

500 Internal Server Error內(nèi)部服務(wù)器錯誤

接下來,你要做的只是創(chuàng)建一個錯誤發(fā)生時顯示的文件,然后把它們和.htaccess一起上傳。

用戶可以利用.htaccess指定自己事先制作好的錯誤提醒頁面。一般情況下,人們可以專門設(shè)立一個目錄,例如errors放置這些頁面。然后再.htaccess中,加入如下的指令:

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

一條指令一行。上述第一條指令的意思是對于404,也就是沒有找到所需要的文檔的時候得顯示頁面為/errors目錄下的notfound.html頁面。不難看出語法格式為:

ErrorDocument 錯誤代碼 /目錄名/文件名.擴(kuò)展名

如果所需要提示的信息很少的話,不必專門制作頁面,直接在指令中使用HTML號了,例如下面這個例子:

ErrorDocument 401 "你沒有權(quán)限訪問該頁面,請放棄!"

2.2.配置.htaccess 停示顯示目錄列表

有些時候,由于某種原因,你的目錄里沒有index文件,這意味著當(dāng)有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下所有的文件都會顯示出來,這會給你的網(wǎng)站留下安全隱患。

為避免這種情況(而不必創(chuàng)建一堆的新index文件),你可以在你的.htaccess文檔中鍵入以下命令,用以阻止目錄列表的顯示:

Options -Indexes

2.3. 配置.htaccess 阻止/允許特定的IP地址

某些情況下,你可能只想允許某些特定IP的用戶可以訪問你的網(wǎng)站(例如:只允許使用特定ISP的用戶進(jìn)入某個目錄),或者想封禁 某些特定的IP地址(例如:將低級用戶隔離于你的信息版面外)。當(dāng)然,這只在你知道你想攔截的IP地址時才有用,然而現(xiàn)在網(wǎng)上的大多數(shù)用戶都使用動態(tài)IP 地址,所以這并不是限制使用的常用方法。

你可以使用以下命令封禁一個IP地址:

deny from 000.000.000.000

這里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的幾個,則可以封禁整個網(wǎng)段的地址。如你輸入210.10.56.,則將封禁210.10.56.0~210.10.56.255的所有IP地址。

你可以使用以下命令允許一個IP地址訪問網(wǎng)站:

allow from 000.000.000.000

被允許的IP地址則為000.000.000.000,你可以象封禁IP地址一樣封禁整個網(wǎng)段。

如果你想阻止所有人訪問該目錄,則可以使用:

deny from all

不過這并不影響腳本程序使用這個目錄下的文檔。

2.4.配置.htaccess 替換index文件

改變?nèi)笔〉氖醉撐募?/p>

一般情況下缺省的首頁文件名有default、index等。不過,有些時候目錄中沒有缺省文件,而是某個特定的文件名,比如在w3sky中是 w3sky.PHP。這種情況下,要用戶記住文件名來訪問很麻煩。在.htaccess中可以輕易的設(shè)置新的缺省文件名:

DirectoryIndex 新的缺省文件名

也可以列出多個,順序表明它們之間的優(yōu)先級別,例如:

DirectoryIndex filename.html index.cgi index.pl default.htm portal.php welcome.php

也 許你不想一直使用index.htm或index.html作為目錄的索引文件。舉例來說,如果你的站點使用 PHP 文件,你可能會想使用 index.PHP來作為該目錄的索引文檔。當(dāng)然也不必局限于"index"文檔,如果你愿意,使用.htaccess你甚至能夠設(shè)置 foofoo.balh來作為你的索引文檔這些互為替換的索引文件可以排成一個列表,服務(wù)器會從左至右進(jìn)行尋找,檢查哪個文檔在真實的目錄中存在。如果一 個也找不到,它將會把目錄列表顯示出來(除非你已經(jīng)關(guān)閉了顯示目錄文件列表)。

DirectoryIndex index.PHP index.PHP3 messagebrd.pl index.html index.htm

2.5.配置.htaccess 重定向頁面

.htaccess 最有用的功能之一就是將請求重定向到同站內(nèi)或站外的不同文檔。這在你改變了一個文件名稱,但仍然想讓用戶用舊地址訪問到它時,變的極為 有用。另一個應(yīng)用(我發(fā)現(xiàn)的很有用的)是重定向到一個長URL,例如在我的時事通訊中,我可以使用一個很簡短的URL 來指向我的會員鏈接。以下是一個重定向文件的例子:

Redirect /location/from/root/file.exthttp://www.21cto.com/new/file/123.html

上述例子中,訪問在root目錄下的名為oldfile.html可以鍵入:/oldfile.html

訪問一個舊次級目錄中的文件可以鍵入:/old/oldfile.html

你 也可以使用.htaccess重定向整個網(wǎng)站的目錄。假如你的網(wǎng)站上有一個名為olddirectory的目錄, 并且你已經(jīng)在一個新網(wǎng)站http://www.w3sky.com/newdirectory/上建立了與上相同的文檔,你可以將舊目錄下所有的文件做一次重定向而不必一一聲 明:

Redirect /olddirectoryhttp://www.w3sky.com/newdirectory

這樣,任何指向到站點中/olddirectory目錄的請求都將被重新指向新的站點,包括附加的額外URL信息。如果正確使用,此功能將極其強(qiáng)大。

我們可能對網(wǎng)站進(jìn)行重新規(guī)劃,將文檔進(jìn)行了遷移,或者更改了目錄。這時候,來自搜索引擎或者其他網(wǎng)站鏈接過來的訪問就可能出錯。這種情況下,可以通過如下指令來完成舊的URL自動轉(zhuǎn)向到新的地址:

Redirect /舊目錄/舊文檔名 新文檔的地址

或者整個目錄的轉(zhuǎn)向:

Redirect 舊目錄 新目錄

3.1. 密碼保護(hù)

.htaccess文件盡管有各種各樣的.htaccess用法,但至今最流行的也可能是最有用 的做法是將其用于網(wǎng)站目錄可靠的密碼保護(hù)。盡管JavaScrip等也能做到,但只有.htaccess具有完美的安全性(即訪問者必須知曉密碼才可以訪 問目錄,并且絕無"后門"可走)。

利用.htaccess將一個目錄加上密碼保護(hù)分兩個步驟。第一步是在你的.htaccess文檔里加上適當(dāng)?shù)膸仔写a,再將.htaccess文檔放進(jìn)你要保護(hù)的目錄下:

AuthName "Section Name"
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user

你可能需要根據(jù)你的網(wǎng)站情況修改一下上述內(nèi)容中的一些部分,如用被保護(hù)部分的名字"Members Area",替換掉"Section Name"。

/full/parth/to/.htpasswd則應(yīng)該替換為指向.htpasswd文件(后面詳述該文檔)的完整服務(wù)器路徑。如果你不知道你網(wǎng)站空間的完整路徑,請詢問一下你的系統(tǒng)管理員。

3.2.密碼保護(hù).htpasswd文件

目 錄的密碼保護(hù)比.htaccess的其他功能要麻煩些,因為你必須同時創(chuàng)建一個包含用戶名和密碼的文檔,用于訪問你的網(wǎng)站,相關(guān)信息(默認(rèn))位于一個名 為.htpasswd的文檔里。像.htaccess一樣,.htpasswd也是一個沒有文件名且具有8位擴(kuò)展名的文檔,可以放置在你網(wǎng)站里的任何地方 (此時密碼應(yīng)加密),但建議你將其保存在網(wǎng)站W(wǎng)eb根目錄外,這樣通過網(wǎng)絡(luò)就無法訪問到它了。

在使用.htaccess來設(shè)置目錄的密碼保護(hù)時,它包含了密碼文件的路徑。從安全考慮,有必要把.htaccess 也保護(hù)起來,不讓別人看到其中的內(nèi)容。雖然可以用其他方式做到這點,比如文檔的權(quán)限。不過,.htaccess本身也能做到,只需加入如下的指令:

order allow,deny
deny from all

3.3.配置 .htaccess 輸入用戶名和密碼

要利用.htaccess對某個目錄下的文檔設(shè)定訪問用戶和對應(yīng)的密碼,首先要做的是生成一個.htpasswd的文本文檔,例如:

forge:y4E7Ec8e7EwV

這里密碼經(jīng)過加密,用戶可以自己找些工具將密碼加密成.htaccess支持的編碼。該文檔最好不要放在www目錄下,建議放在www根目錄文檔之外,這樣更為安全些。

有了授權(quán)用戶文檔,可以在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的服務(wù)器目錄

AuthGroupFile /dev/null (需要授權(quán)訪問的目錄)

AuthName EnterPassword

AuthType Basic (授權(quán)類型)

require user wsabstract (允許訪問的用戶,如果希望表中所有用戶都允許,可以使用 require valid-user)

注,括號部分為學(xué)習(xí)時候自己添加的注釋

拒絕來自某個IP的訪問

如果我不想某個政府部門訪問到我的站點的內(nèi)容,那可以通過.htaccess中加入該部門的IP而將它們拒絕在外。

例如:

order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all

第二行拒絕某個IP,第三行拒絕某個IP段,也就是219.5.45.0~219.2.45.255

想要拒絕所有人?用deny from all好了。不止用IP,也可以用域名來設(shè)定。

創(chuàng)建好.htpasswd文檔后(可以通過文字編輯器創(chuàng)建),下一步是輸入用于訪問網(wǎng)站的用戶名和密碼,應(yīng)為:

username:password

"password" 的位置應(yīng)該是加密過的密碼。你可以通過幾種方法來得到加密過的密碼:一是使用一個網(wǎng)上提供的 permade腳本或自己寫一個;另一個很不錯的username/password加密服務(wù)是通過KxS網(wǎng)站,這里允許你輸入用戶名及密碼,然后生成正 確格式的密碼。

對于多用戶,你只需要在.htpasswd文檔中新增同樣格式的一行即可。另外還有一些免費的腳本程序可以方便地管理.htpasswd文檔,可以自動新增/移除用戶等。

3.4.配置.htaccess 直接訪問加密網(wǎng)站

當(dāng) 你試圖訪問被.htaccess密碼保護(hù)的目錄時,你的瀏覽器會彈出標(biāo)準(zhǔn)的username/password對話窗口。如果你不喜歡這種方式,有些腳 本程序可以允許你在頁面內(nèi)嵌入username/password輸入框來進(jìn)行認(rèn)證,你也可以在瀏覽器的URL框內(nèi)以以下方式輸入用戶名和密碼(未加密 的):

http://username:password@www.w3sky.com/directory/

3.5.利用 .htaccess 防止盜鏈

如果不喜歡別人在他們的網(wǎng)頁上連接自己的圖片、文檔的話,也可以通過htaccess的指令來做到。

所需要的指令如下:

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?w3sky.com/.*$[NC]
RewriteRule .(gif &line;jpg)$ - [F]

如果覺得讓別人的頁面開個天窗不好看,那可以用一張圖片來代替:

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?w3sky.com/.*$[NC]
RewriteRule .(gif &line;jpg)$http://www.w3sky.com/替代圖片文件名 [R,L]

3.6.利用 .htaccess進(jìn)行地址轉(zhuǎn)向

這 種方法,就是把yourdomain.com的流量全部 301轉(zhuǎn)向到www.yourdomain.com(或者反過來)。其實對于這種方法,國外有人認(rèn)為對PageRank沒有幫助。我覺得是因為他們看到 Google管理員工具中有一個首選域工具,可以指定Google的爬蟲把www.yourdomain.com或者yourdomain.com作為抓取和排名的首選域,轉(zhuǎn)向似乎就沒有必要了。但確實又有不少人證實這是有效 的,反正目前還沒有人說這種方法會對SEO或者pagerank有什么損害。

在.htaccess中寫入:

Options +FollowSymlinks All -Indexes
rewriteEngine on
rewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$http://www.domain.com/$1[R=301,L]

3.7.利用 .htaccess對域名中"www"的控制

強(qiáng)制去除www

下面以 Wordpress 為例,其它的情況,可以自己參照解決。在你的 Wordpress 目錄下通常會有一個 .htaccess 文件,如果沒有,那就手動建立一個。如果你設(shè)定了 permalink 的話,.htaccess 里面的內(nèi)容會有如下一坨:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

具體是啥意思咱就甭管它了,只管在 RewriteBase / 這行下面加上:

RewriteCond %{HTTP_HOST} ^www.yourdomain.tld$ [NC]
RewriteRule ^(.*)$http://yourdomain.tld/$1[R=301,L]

這樣就大功告成了。當(dāng)然要把 yourdomain.tld 換成你自己的域名。上面兩行的意思是把www.yourdomain.tld這種形式改寫成 yourdomain.tld, 并把訪問前者的所有鏈接永久轉(zhuǎn)向到后者。

域名前強(qiáng)制加上www

如果你實在是堅持要把 www 加在前面,我上面的算是白寫了,表示遺憾。但,你可以。只需把上面添加的兩行代碼改成這樣:

RewriteCond %{HTTP_HOST} ^yourdomain.tld$ [NC]
RewriteRule ^(.*)$http://www.yourdomain.tld/$1[R=301,L]

4.1. .htaccess 總結(jié)

.htaccess是一個站點管理員可以應(yīng)用的強(qiáng)大工具,有更多的變化以適應(yīng)不同的用途,可以節(jié)約時間及提高網(wǎng)站的安全性

.htaccess的特別說明

* 啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,并可以用AllowOverride限制特定命令的使用

* 如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:

AccessFileName .config

* 一般情況下,不應(yīng)該使用. htaccess文件,除非你對主配置文件沒有訪問權(quán)限。有一種很常見的誤解,認(rèn)為用戶認(rèn)證只能通過.htaccess文件實現(xiàn),其實并不是這樣,把用戶 認(rèn)證寫在主配置文件中是完全可行的,而且是一種很好的方法。.htaccess文件應(yīng)該被用在內(nèi)容提供者需要針對特定目錄改變服務(wù)器的配置而又沒有 root權(quán)限的情況下。如果服務(wù)器管理員不愿意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在同一個機(jī)器上運行了 多個用戶站點,而又希望用戶可以自己改變配置的情況下。雖然如此,一般都應(yīng)該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文 件中的配置,都可以放在主配置文件的段中,而且更高效。避免使用.htaccess文件有兩個主要原因,即性能和安 全。

在線 .htaccess文件生成器http://cooletips.de/htaccess/

能夠在線生成. htaccess文件,很簡單的就配置重定向,系統(tǒng)錯誤文件等。

敢想敢做敢堅持

.htaccess文件提供了針對每個目錄改變配置的方法。

top

.htaccess文件*

相關(guān)模塊相關(guān)指令

*core

*mod_authn_file

*mod_authz_groupfile

*mod_cgi

*mod_include

*mod_mime

*AccessFileName

*AllowOverride

*Options

*AddHandler

*SetHandler

*AuthType

*AuthName

*AuthUserFile

*AuthGroupFile

*Require

top

工作原理和使用方法*

.htaccess文件(或者"分布式配置文件")提供了針對目錄改變配置的方法,即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件,以作用于此目錄及其所有子目錄。

說明:如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。例如,需要使用.config,則可以在服務(wù)器配置文件中按以下方法配置:

AccessFileName.config

允 許放在這些文件中的指令取決于AllowOverride指令,此指令按類別決定了.htaccess文件中哪些 指令才是有效的。如果一個指令允許放在.htaccess文件中,則,在本手冊的說明中,此指令會有一個覆蓋段,其中說明了為使此指令生效而必須在 AllowOverride指令中設(shè)置的值。

例如,本手冊對 AddDefaultCharset指令的說明表明了,此指令可以用于.htaccess文件(見 Context一行),而Override一行是"FileInfo",那么為使.htaccess中的此指令有效,則至少要設(shè)置 "AllowOverrideFileInfo"。

例子:

Context:serverconfig,virtualhost,directory,.htaccess

Override:FileInfo

如果不能確定一個特定的指令是否允許用于.htaccess文件,可以查閱手冊中對指令的說明,看在Context("上下文")行中是否有".htaccess."。

使用.htaccess文件的場合

一般情況下,不應(yīng)該使用.htaccess文件,除非你對主服務(wù)器配置文件沒有存取權(quán)限。有一種很常見的誤解,認(rèn)為用戶認(rèn)證只能通過.htaccess文件實現(xiàn),但并不是這樣,把用戶認(rèn)證寫在主服務(wù)器配置中是完全可行的,而且是一種很好的方法。

在 內(nèi)容提供者需要針對目錄改變服務(wù)器的配置而對服務(wù)器系統(tǒng)沒有root權(quán)限時,則應(yīng)該使用.htaccess文件。 如果服務(wù)器管理員不愿意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在一個機(jī)器上宿主多個用戶站點,而又希望用戶 可以自己改變配置的情況下。

雖然如此,一般都應(yīng)該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主服務(wù)器的段中,而且更高效。

避免使用.htaccess文件有兩個主要原因。

首 先是性能。如果AllowOverride允許使用.htaccess文件,則,Apache需要在每個目錄中查 找.htaccess因此,無論是否真正用到,允許使用.htaccess文件都會導(dǎo)致性能的下降。另外,每次請求一個頁面時,都需要讀 取.htaccess文件。

還有,Apache必須在所有更高級的目錄中查找.htaccess文件,使所有有效的指令都起作用(參見howdirectivesareapplied.),所以,如果有對/www/htdocs/example中頁面的請求,Apache必須查找以下文件:

/.htaccess

/www/.htaccess

/www/htdocs/.htaccess

/www/htdocs/example/.htaccess

而且,對此目錄以外的每個文件訪問,還有4個附加的文件系統(tǒng)訪問,即使這些文件都不存在。(注意,這可能僅僅發(fā)生在/允許使用.htaccess文件的情況下,雖然這種情況并不多。)

其 次是安全。如此,會允許用戶修改服務(wù)器的配置,可能會導(dǎo)致未加限制的修改,請認(rèn)真考慮是否給予用戶這樣的特權(quán)。但 是,如果給予用戶較少的特權(quán)而不能滿足其需要,則會帶來額外的技術(shù)支持請求,所以,必須明確地告訴用戶已經(jīng)給予他們的權(quán)限,說明 AllowOverride設(shè)置的值,并引導(dǎo)他們參閱相應(yīng)的說明,以免日后許多麻煩。

注意,在/www/htdocs/example目錄下.htaccess文件中放置指令,與,在主服務(wù)器配置文件中段中放置相同指令,是等效的。:

/www/htdocs/example中的.htaccess:

/www/htdocs/example中.htaccess文件的內(nèi)容

AddType text/example.exm

httpd.conf文件中的段

AddType text/example.exm

但是,把這個配置放置在服務(wù)器配置文件中則更加高效,因為只需要在Apache啟動時讀取一次,而不是在有文件請求時每次都讀取。

將AllowOverride設(shè)置為"none"可以完全禁止使用.htaccess文件。

AllowOverrideNone

指令的生效

.htaccess 文件中的配置指令作用于.htaccess文件所在的目錄及其所有子目錄,但是,很重要需要記住 的是,其更高級的目錄也可能會有.htaccess文件,而指令是按查找順序依次生效,所以,一個特定目錄下的.htaccess文件中的指令可能會覆蓋 其更高級目錄中的.htaccess文件的指令,即,子目錄中的指令會覆蓋更高級目錄或者主服務(wù)器配置文件中的指令。

例如:目錄/www/htdocs/example1中的.htaccess文件有如下內(nèi)容:

Options+ExecCGI

(注意:必須設(shè)置"AllowOverrideOptions"以允許在.htaccess文件中使用"Options"指令。)

在目錄/www/htdocs/example1/example2中的.htaccess文件有如下內(nèi)容:

OptionsIncludes

由于第二個.htaccess文件的存在,/www/htdocs/example1/example2中的CGI執(zhí)行是不允許的,而只允許OptionsIncludes,它完全覆蓋了之前的設(shè)置。

認(rèn)證舉例

如 果你為了知道如何認(rèn)證,直接從這里開始看,有很重要的一點需要注意,有一種常見的誤解,認(rèn)為實現(xiàn)密碼認(rèn)證必須要使 用.htaccess文件,其實不是這樣。把認(rèn)證指令放在主服務(wù)器配置文件的段中是一個更好的方法, 而.htaccess文件應(yīng)該僅僅用于無權(quán)訪問主服務(wù)器配置文件的時候。參見上述的使用.htaccess文件的場合。

有此聲明在先,如果你仍然需要使用.htaccess文件,請看以下說明。

必須設(shè)置"AllowOverrideAuthConfig"以允許這些指令生效

.htaccess文件的內(nèi)容:

AuthTypeBasic

AuthName"PasswordRequired"

AuthUserFile/www/passwords/password.file

AuthGroupFile/www/passwords/group.file

RequireGroupadmins

注意,必須設(shè)置AllowOverrideAuthConfig以允許這些指令生效

更詳細(xì)的有關(guān)身份識別和認(rèn)證的說明,請參見authenticationtutorial。

服務(wù)器端包含舉例

.htaccess文件的另一個常見用途是允許一個特定目錄的服務(wù)器端包含(ServerSideIncludes),可以在需要的目錄中放置.htaccess文件,并如下配置:

Options+Includes

AddTypetext/htmlshtml

AddHandlerserver-parsedshtml

注意,必須同時設(shè)置AllowOverrideOptions和AllowOverrideFileInfo使這些指令生效。

更詳細(xì)的有關(guān)服務(wù)器端包含的說明,請參見SSItutorial。

CGI舉例

最后,可以通過.htaccess文件允許在特定目錄中執(zhí)行CGI程序,需按如下配置:

Options+ExecCGI

AddHandlercgi-scriptcgipl

另外,如下,可以使給定目錄下所有文件被視為CGI程序:

Options+ExecCGI

SetHandlercgi-script

注意,必須設(shè)置AllowOverrideOptions使這些指令生效。

更詳細(xì)的有關(guān)CGI編程和配置的說明,請參見CGItutorial。

疑難解答

如果在.htaccess文件中寫入了配置指令但不起作用,可能有多種原因。

最常見的原因是,AllowOverride指令沒有被正確設(shè)置,必須確保沒有對此文件區(qū)域設(shè)置 AllowOverrideNone。有一個很好的測試方法,即,在.htaccess文件隨便增加點沒用的內(nèi)容,如果服務(wù)器沒有返回了一個錯誤消息,那 么幾乎可以斷定設(shè)置了AllowOverrideNone。

在訪問文檔時,如果收到服務(wù)器的出錯消息,應(yīng)該檢查Apache的出錯日志,可以知道.htaccess文件中哪些指令是不允許使用的,也可能會發(fā)現(xiàn)需要糾正的語法錯誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內(nèi)容