.htaccess文件配置指南

 

1.什麼是.htaccess文件

從本指南中,你將可以學習到有關.htaccess文件及其功能的知識,並用以優化你的網站。儘管.htaccess只是一個文件,但它可以更改服務器的設置,允許你做許多不同的事情,最流行的功能是您可以創建自定義的“404 error”頁面。.htaccess 並不難於使用,歸根結底,它只是在一個text文檔中添加幾條簡單的指令而已。

首先你要判斷主機支持它

這可能很難用簡單的答案來回答。許多主機支持.htaccess,但實際上並不會特別聲明,許多其他類型的主機有能力但並不允許他們的用戶使用. htaccess。一般來說,如果你的主機使用Unix或Linux系統,或任何版本的Apache網絡服務器,從理論上都是支持.htaccess的,儘管你的主機服務商可能不允許你使用它。

判斷你的主機是否允許.htaccess,一個標誌很好的是它是否支持文件夾密碼保護。爲達到此功能,主機服務商需要使用.htaccess(當然,少數情況下他們雖提供密碼保護功能,但卻並不允許你使用.htaccess)。如果你不確定自己的主機是否支持.htaccess,最好的辦法是上傳你自己的.htaccess文件看看是否有用,或者直接發送e-mail向你的主機服務商諮詢。

Apache系統中的.htaccess文件(或者”分佈式配置文件”提供了針對目錄改變配置的方法,即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件,以作用於此目錄及其所有子目錄。作爲用戶,所能使用的命令受到限制。管理員可以通過Apache的AllowOverride指令來設置。

子目錄中的指令會覆蓋更高級目錄或者主服務器配置文件中的指令。

.htaccess必須以ASCII模式上傳,最好將其權限設置爲644。

.htaccess可以做大量的事情,包括:文件夾密碼保護、用戶自動重定向、自定義錯誤頁面、改變你的文件擴展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作爲index文件。

2.如何創建.httaccess文件

創建.htaccess文件也許會給你帶來一些困難。寫文件很容易,你只需要在文字編緝器(例如:寫字板)裏寫下適當的代碼。真正困難的可能是文件的保存,因爲.htaccess是一個古怪的文件名(它事實上沒有文件名,只有一個由8個字母組成的擴展名),而在一些系統(如windows 3.1)中無法接受這樣的文件名。在大多數的操作系統中,你需要做的是將文檔保存成名爲:

“.htaccess”

(包括引號)。如果這也不行,你需要將其先命名爲其它名字(例如htaccess.txt),再將其上傳到服務器上,之後直接使用FTP軟件來重命名。

警告

在使用.htaccess之前,我必須給你一些警告。雖然在服務器上使用.htaccess絕對不太可能給你帶來任何麻煩(如果有些東西錯了,它只是沒效用罷了),但如果你使用Microsoft FrontPage Extensions,就必須特別小心。因爲FrontPage Extensions本身使用了.htaccess,因此你不能編輯它並加入你自己的信息。如果確實有這方面的需要(並不推薦,但是可能),你應該先從服務器上下載.htaccess文檔(如果存在),之後在前面加上你的代碼。

 

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

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

ErrorDocument errornumber /file.html

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

ErrorDocument 404 /notfound.html

如果文件不在網站的根目錄下,你只需要把路徑設置爲:

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

常見的服務器錯誤返回代碼:

500 Internal Server Error內部服務器錯誤

接下來,你要做的只是創建一個錯誤發生時顯示的文件,然後把它們和.htaccess一起上傳。

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

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

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

ErrorDocument 錯誤代碼 /目錄名/文件名.擴展名

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

ErrorDocument 401 “你沒有權限訪問該頁面,請放棄!”

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

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

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

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

某些情況下,你可能只想允許某些特定IP的用戶可以訪問你的網站(例如:只允許使用特定ISP的用戶進入某個目錄),或者想封禁某些特定的IP地址(例如:將低級用戶隔離於你的信息版面外)。當然,這隻在你知道你想攔截的IP地址時纔有用,然而現在網上的大多數用戶都使用動態IP地址,所以這並不是限制使用的常用方法。

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

deny from 000.000.000.000

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

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

allow from 000.000.000.000

被允許的IP地址則爲000.000.000.000,你可以象封禁IP地址一樣封禁整個網段。

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

deny from all

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

4.配置.htaccess 替換index文件

改變缺省的首頁文件

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

DirectoryIndex 新的缺省文件名

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

DirectoryIndex filename.html index.cgi index.pl default.htm

也許你不想一直使用index.htm或index.html作爲目錄的索引文件。舉例來說,如果你的站點使用PHP文件,你可能會想使用 index.PHP來作爲該目錄的索引文檔。當然也不必侷限於“index”文檔,如果你願意,使用.htaccess你甚至能夠設置 foofoo.balh來作爲你的索引文檔!

這些互爲替換的索引文件可以排成一個列表,服務器會從左至右進行尋找,檢查哪個文檔在真實的目錄中存在。如果一個也找不到,它將會把目錄列表顯示出來(除非你已經關閉了顯示目錄文件列表)。

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

5.配置.htaccess 重定向頁面

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

Redirect /location/from/root/file.ext
http://www.w3sky.com/new/file/123.html

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

/oldfile.html

訪問一箇舊次級目錄中的文件可以鍵入:

/old/oldfile.html

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

Redirect /olddirectory http://www.w3sky.com/newdirectory

這樣,任何指向到站點中/olddirectory目錄的請求都將被重新指向新的站點,包括附加的額外URL信息。例如有人鍵入:

http://www.w3sky.com/olddirecotry/oldfiles/images/image.gif

請求將被重定向到:

http://www.w3sky.com/newdirectory/oldfiles/images/image.gif

如果正確使用,此功能將極其強大。

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

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

或者整個目錄的轉向:

Redirect 舊目錄 新目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章