天天看點

.htaccess使用方法總結

 Unix或Linux系統,或任何版本的Apache Web服務,都是支援.htaccess的,但是有的主機服務商可能不允許你自定義自己的.htaccess檔案。國外目前主流的虛拟主機提供商,幾乎全部都支援自定義功能。

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

如果需要使用.htaccess以外的其他檔案名,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在伺服器配置檔案中按以下方法配置:

AccessFileName .config

籠統地來說,.htaccess可以幫我們實作包括:檔案夾密碼保護、使用者自動重定向、自定義錯誤頁面、改變你的檔案擴充名、封禁特定IP位址的使用者、隻允許特定IP位址的使用者、禁止目錄清單,以及使用其他檔案作為index檔案等一些功能。

●建立一個.htaccess文檔

.htaccess是一個古怪的檔案名(從Win的角度來說,它沒有檔案名,隻有一個由8個字母組成的擴充名,不過實際上它是linux下的命名,而很多linux下的東西,我們向來都會認為很古怪的),在Win系統中是不可以直接通過“建立”檔案來建立的,不過我們可以利用cmd中的copy來實作,比如copy sample.txt .htaccess。也可以先建立一個htaccess.txt,然後Ftp到伺服器,通過FTP來修改檔案名。

●自定義錯誤頁

.htaccess的一個應用是自定義錯誤頁面,這将使你可以擁有自己的、個性化的錯誤頁面(例如找不到檔案時),而不是你的服務商提供的錯誤頁或沒有任何頁面。這會讓你的網站在出錯的時候看上去更專業。你還可以利用腳本程式在發生錯誤的時候通知你(例如當找不到頁面的時候自動Email給你)。

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

ErrorDocument errornumber /file.html

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

ErrorDocument 404 /notfound.html

如果檔案不在網站的根目錄下,你隻需要把路徑設定為:

ErrorDocument 500 /errorpages/500.html

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

401 – Authorization Required 需要驗證

400 – Bad request 錯誤請求

403 – Forbidden 禁止

500 – Internal Server Error 内部伺服器錯誤

404 – Wrong page 找不到頁面

接下來,你要做的隻是建立一個錯誤發生時顯示的檔案,然後把它們和.htaccess一起上傳。

●.htaccess指令

▼禁止顯示目錄清單

有些時候,由于某種原因,你的目錄裡沒有index檔案,這意味着當有人在浏覽器位址欄鍵入了該目錄的路徑,該目錄下所有的檔案都會顯示出來,這會給你的網站留下安全隐患。

為避免這種情況(而不必建立一堆的新index檔案),你可以在你的.htaccess文檔中鍵入以下指令,用以阻止

目錄清單的顯示:

Options -Indexes

▼阻止/允許特定的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

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

▼替換index檔案

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

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

DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm

▼重定向(rewrite)

.htaccess 最有用的功能之一就是将請求重定向到同站内或站外的不同文檔。這在你改變了一個檔案名稱,但仍然想讓使用者用舊位址通路到它時,變的極為有用。另一個應用(我發現的很有用的)是重定向到一個長URL,例如在我的時事通訊中,我可以使用一個很簡短的URL來指向我的會員連結。以下是一個重定向檔案的例子:

Redirect /location/from/root/file.ext http: //minidx.com/new/file/location.xyz

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

/oldfile.html

通路一個舊次級目錄中的檔案可以鍵入:

/old/oldfile.html

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

Redirect /olddirectory http: //minidx.com/newdirectory

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

http: //minidx.com/olddirecotry/oldfiles/p_w_picpaths/p_w_picpath.gif

請求将被重定向到:

http: //minidx.com/newdirectory/oldfiles/p_w_picpaths/p_w_picpath.gif

如果正确使用,此功能将極其強大。

繼續閱讀