.htaccess的功能非常的強大,你可以通過它轉向域名、自定義主頁、自定義404錯誤頁等很多實用功能。對於一些功能不是很全面的控制面板,掌握一些.htaccess的操作,可以讓我們如魚得水,個人體會^_^
. r4 g1 D' n5 ^% x6 p# [- t
% }) x4 m1 u; X; L) q ^& @$ d7 W下面是引用的文章,當然我個人覺得記憶比較麻煩,如果你正在建站,推薦你大致看下具體功能,需要的時候可以再看或者是找些在線的網站生成如:http://developers.evrsoft.com/tools-htaccess-generator.shtml即可。9 S, z7 z: l. `! l, m
G, N$ O+ M! i% A2 IApache服務器的.htaccess是一個非常強大的分佈式配置文件,學會使用.htaccess,對虛擬主機用戶來說,可以實現眾多的功能。這裡有一篇很容易理解的.htaccess介紹,作為入門文章非常的適合。文章最初來自freewebmasterhelp.com,QiRan作了簡單的中文翻譯,我將加以完善。
6 ^: b+ Y8 O; s: G p2 G P0 X4 i/ ~ B
Part 1 – 介紹
8 _0 c4 a& j6 q( Q4 H8 z7 IPart 2 - .htaccess命令
, `0 \( K$ Y5 k# R7 V' BPart 3 - 密碼保護
; Z& I& k5 }* Y0 f+ m0 l: B! t1 P. h: o. \: m) a {. p! c
Part 1 - 介紹( V9 ~1 a1 z$ S! E, x2 D
% f" ] I, v' _6 J介紹
# Z8 T) G1 |, h從本指南中,你將可以學習到有關.htaccess文件及其功能的知識,並用以優化你的網站。儘管.htaccess只是一個文件,但它可以更改服務器的設置,允許你做許多不同的事情,最流行的功能是您可以創建自定義的「404 error」頁面。.htaccess並不難於使用,歸根結底,它只是在一個text文檔中添加幾條簡單的指令而已。
' W; s. T8 v0 P6 e X我的主機支持它嗎?. W! V( l( L7 S( z, N5 b
2 m5 P5 S& R7 Q \0 {, o這可能很難用簡單的答案來回答。許多主機支持.htaccess,但實際上並不會特別聲明,許多其他類型的主機有能力但並不允許他們的用戶使用.htaccess。一般來說,如果你的主機使用Unix或Linux系統,或任何版本的Apache網絡服務器,從理論上都是支持.htaccess的,儘管你的主機服務商可能不允許你使用它。& I0 N% F' T/ j$ [" D$ z
3 V; a& l Y/ w$ S+ Y判斷你的主機是否允許.htaccess,一個標誌很好的是它是否支持文件夾密碼保護。為達到此功能,主機服務商需要使用.htaccess(當然,少數情況下他們雖提供密碼保護功能,但卻並不允許你使用.htaccess)。如果你不確定自己的主機是否支持.htaccess,最好的辦法是上傳你自己的.htaccess文件看看是否有用,或者直接發送郵件向你的主機服務商咨詢。
& P3 o# c+ A7 A1 A6 \
/ ~9 |! s! h3 Y0 |* Q我該怎麼做?
' P6 \# a0 B. w/ z) Q8 I& t你可能疑惑.htaccess到底能做些什麼,或者你可能曾知道它的一些功能但並不真正瞭解你實際到底可以用它來做多少事情。* Z1 d; L2 m/ p& h
" ?3 V1 `% q; ~% \
.htaccess可以做大量的事情,包括:文件夾密碼保護、用戶自動重定向、自定義錯誤頁面、改變你的文件擴展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件。' B; Q$ q7 _6 C/ \6 j, h
8 e" f9 N* T( s) [! c J8 d創建一個.htaccess文檔
9 x/ i- B- y( n% A8 I3 i. E$ v0 }; F創建.htaccess文件也許會給你帶來一些困難。寫文件很容易,你只需要在文字編緝器(例如:寫字板)裡寫下適當的代碼。真正困難的可能是文件的保存,因為.htaccess是一個古怪的文件名(它事實上沒有文件名,只有一個由8個字母組成的擴展名),而在一些系統(如Windows 3.1)中無法接受這樣的文件名。在大多數的操作系統中,你需要做的是將文檔保存成名為:「.htaccess」(包括引號)。如果這也不行,你需要將其先命名為其它名字(例如htaccess.txt),再將其上傳到服務器上,之後直接使用FTP軟件來重命名。, S$ v& l- z- L
7 S" a0 y; s+ s3 Q4 n3 t警告
- L3 V7 I6 O% d. r7 Y* R3 K在使用.htaccess之前,我必須給你一些警告。雖然在服務器上使用.htaccess絕對不太可能給你帶來任何麻煩(如果有些東西錯了,它只是沒效用罷了),但如果你使用Microsoft FrontPage Extensions,就必須特別小心。因為FrontPage Extensions本身使用了.htaccess,因此你不能編輯它並加入你自己的信息。如果確實有這方面的需要(並不推薦,但是可能),你應該先從服務器上下載.htaccess文檔(如果存在),之後在前面加上你的代碼。( M. Z* r- B, s1 }* a' k
4 M, `& v; d. ]! l% `3 x
自定義錯誤頁
3 t: j5 D& q4 p9 D B- {我要介紹的.htaccess的第一個應用是自定義錯誤頁面,這將使你可以擁有自己的、個性化的錯誤頁面(例如找不到文件時),而不是你的服務商提供的錯 誤頁或沒有任何頁面。這會讓你的網站在出錯的時候看上去更專業。你還可以利用腳本程序在發生錯誤的時候通知你(例如我使用Free Webmaster Help的PHP腳本程序,當找不到頁面的時候自動Email給我)。
+ G8 Z1 k( x* t, Y7 z你所知道的任何頁面錯誤代碼(像404找不到頁面),都可以通過在.htaccess文件裡加入下面的文字將其變成自定義頁面:/ A6 r. ]" A8 m' [+ U" M* \
ErrorDocument errornumber /file.html
9 [- L+ F y4 N舉例來說,如果我的根目錄下有一個notfound.html文件,我想使用它作為404 error的頁面:
1 P' N, r) T5 N" k. oErrorDocument 404 /notfound.html" Y' C2 Q0 l* H5 Z
如果文件不在網站的根目錄下,你只需要把路徑設置為:0 i2 w1 h- d/ h6 q8 U# H
ErrorDocument 500 /errorpages/500.html
* ?4 ]0 c N1 E) a3 d以下是一些最常用的錯誤:' [9 }+ \+ I7 ?! c
401 - Authorization Required 需要驗證
0 D5 U& Z. j6 S0 w$ y! m400 - Bad request 錯誤請求$ R) D/ j( f1 r0 J" n
403 - Forbidden 禁止
% W& b7 ~7 P! k$ h500 - Internal Server Error 內部服務器錯誤
" W# @0 H2 }; l# x404 - Wrong page 找不到頁面
+ Z! }6 m- ], }2 v接下來,你要做的只是創建一個錯誤發生時顯示的文件,然後把它們和.htaccess一起上傳。1 {0 R$ L1 c; ? q5 I/ Y, z
$ T( d; t2 Z ]
Part 2 - .htaccess命令7 @! n; f" y3 s; Z/ Z9 b4 Q
介紹
7 Y; D' }& b9 E1 e在上一部分,我已經簡單介紹了.htaccess以及它的一些有用功能,在這一部分,我將向你演示如何使用.htaccess文檔去實現這些功能。
( F* Z' ?* s' k4 u停示顯示目錄列表$ Q2 a/ J2 Q% s; [! p0 d0 S, a
有些時候,由於某種原因,你的目錄裡沒有index文件,這意味著當有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下所有的文件都會顯示出來,這會給你的網站留下安全隱患。3 i+ c0 v5 D% h
為避免這種情況(而不必創建一堆的新index文件),你可以在你的.htaccess文檔中鍵入以下命令,用以阻止# B' a1 u/ e7 J7 X d
3 U F6 W. H! b目錄列表的顯示:
4 n" y+ I0 I0 v2 S+ A" b" y5 yOptions -Indexes
: F6 D+ S6 M7 q4 W7 w4 M* {: S
. t. |5 m$ l* K1 f阻止/允許特定的IP地址8 A/ ?/ Z$ O; D! `7 M7 A
某些情況下,你可能只想允許某些特定IP的用戶可以訪問你的網站(例如:只允許使用特定ISP的用戶進入某個目錄),或者想封禁某些特定的IP地址(例如:將低級用戶隔離於你的信息版面外)。當然,這只在你知道你想攔截的IP地址時才有用,然而現在網上的大多數用戶都使用動態IP地址,所以這並不是限制使用的常用方法。3 b% |( {# G! A2 B8 _! c' u
你可以使用以下命令封禁一個IP地址:
' e/ D6 \8 X6 o5 ^8 [ Q# p6 Wdeny from 000.000.000.000
7 c$ q. w; D) o {% ]! j* l這裡的000.000.000.000是被封禁的IP地址,如果你只指明了其中的幾個,則可以封禁整個網段的地址。如你輸入210.10.56.,則將封禁210.10.56.0~210.10.56.255的所有IP地址。
/ [/ { F8 s8 A. Q, X你可以使用以下命令允許一個IP地址訪問網站:5 C; v; Y5 ?+ C2 @% B7 J! z* r
allow from 000.000.000.0002 i, S E' o2 V+ z
被允許的IP地址則為000.000.000.000,你可以像封禁IP地址一樣允許整個網段。7 z$ l, U( W# h4 A6 |4 Y
如果你想阻止所有人訪問該目錄,則可以使用:& R( F$ L6 D1 R! U/ I3 T/ U+ h' P) m
deny from all5 ]( ^+ ~$ z# F. a; m, g# h
不過這並不影響腳本程序使用這個目錄下的文檔。5 t7 m3 h ~" U- F' m
9 t/ o* l/ H- W3 M
替換index文件
9 c4 l& o* A3 R; w, i也許你不想一直使用index.htm或index.html作為目錄的索引文件。舉例來說,如果你的站點使用PHP文件,你可能會想使用 index.php來作為該目錄的索引文檔。當然也不必局限於「index」文檔,如果你願意,使用.htaccess你甚至能夠設置foofoo.balh來作為你的索引文檔!; z0 D# y1 O/ Z( P8 ]8 p
這些互為替換的索引文件可以排成一個列表,服務器會從左至右進行尋找,檢查哪個文檔在真實的目錄中存在。如果一個也找不到,它將會把目錄列表顯示出來(除非你已經關閉了顯示目錄文件列表)。
: n7 h5 \/ o0 T: G# ^ y# M7 LDirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm, z$ S" R G0 {5 I
重定向5 R9 M% q# Y2 `; f4 Z
.htaccess最有用的功能之一就是將請求重定向到同站內或站外的不同文檔。這在你改變了一個文件名稱,但仍然想讓用戶用舊地址訪問到它時,變的極為有用。另一個應用(我發現的很有用的)是重定向到一個長URL,例如在我的時事通訊中,我可以使用一個很簡短的URL來指向我的會員鏈接。以下是一個重定向文件的例子:
' v$ k" ?5 d- f3 i( fRedirect /location/from/root/file.ext http://www.othersite.com/new/file/location.xyz
3 e( k0 Q' _; {# G2 [上述例子中,訪問在root目錄下的名為oldfile.html可以鍵入:
9 O' F5 L. x% o! t. i4 \, H/oldfile.html
2 g8 @! v }" k( N; R訪問一個舊次級目錄中的文件可以鍵入:% f' ~. T2 |2 `5 o
/old/oldfile.html
4 N( B+ O8 f* ~( ?6 f# E你也可以使用.htaccess重定向整個網站的目錄。假如你的網站上有一個名為olddirectory的目錄,並且你已經在一個新網站http://www.newsite.com/newdirectory/上建立了與上相同的文檔,你可以將舊目錄下所有的文件做一次重定向而不必一一聲明:
0 E3 U. a/ x, H9 R3 B- F* |Redirect /olddirectory http://www.newsite.com/newdirectory- W7 x. c5 I& p( U& x! H" ?8 m
這樣,任何指向到站點中/olddirectory目錄的請求都將被重新指向新的站點,包括附加的額外URL信息。例如有人鍵入:
S8 f6 q: m& e+ }+ e8 Vhttp://www.youroldsite.com/olddirecotry/oldfiles/images/image. gif9 a, i* A( @( B5 Y2 z
請求將被重定向到:8 o* r) d; @% Z( T* w" @
http://www.newsite.com/newdirectory/oldfiles/images/image. gif3 h: K6 D: |2 y" g- p
如果正確使用,此功能將極其強大。1 V: }& N9 a7 n5 D- y# c
5 r w- o! r2 A/ i+ D3 M" P
Part 3 – 密碼保護& V- x# g( _2 U. [% Z5 l
Introduction 介紹
9 c2 m, d8 C' l" ]儘管有各種各樣的.htaccess用法,但至今最流行的也可能是最有用的做法是將其用於網站目錄可靠的密碼保護。儘管JavaScript等也能做到,但只有.htaccess具有完美的安全性(即訪問者必須知曉密碼才可以訪問目錄,並且絕無「後門」可走)。" w3 n% c( b( _& v
密碼保護的.htaccess文件! C2 A$ X6 k' a" R
利用.htaccess將一個目錄加上密碼保護分兩個步驟。第一步是在你的.htaccess文檔裡加上適當的幾行代碼,再將.htaccess文檔放進你要保護的目錄下:& J7 u( \! q4 {/ g2 S- C/ T( S
AuthName 「Section Name」, `4 D$ x5 H7 K$ v. a X
AuthType Basic
3 R' l: L+ h* v M' A# zAuthUserFile /full/path/to/.htpasswd# G5 |' d1 ^, M5 i) Z5 n
Require valid-user
! h+ V2 w% T$ K你可能需要根據你的網站情況修改一下上述內容中的一些部分,如用被保護部分的名字」Members Area」,替換掉「Section Name」。
) d! V% Q) H" E/full/parth/to/.htpasswd則應該替換為指向.htpasswd文件(後面詳述該文檔)的完整服務器路徑。如果你不知道你網站空間的完整路徑,請詢問一下你的系統管理員。5 n$ h) @8 |7 z$ n, j
密碼保護的.htpasswd文件
5 ?# G' G2 D# w: w$ q目錄的密碼保護比.htaccess的其他功能要麻煩些,因為你必須同時創建一個包含用戶名和密碼的文檔,用於訪問你的網站,相關信息(默認)位於一個名為.htpasswd的文檔裡。像.htaccess一樣,.htpasswd也是一個沒有文件名且具有8位擴展名的文檔,可以放置在你網站裡的任何地方(此時密碼應加密),但建議你將其保存在網站Web根目錄外,這樣通過網絡就無法訪問到它了。. I9 l% d7 `/ M- N9 a8 m( u
輸入用戶名和密碼
/ B; O S8 y' F- X' F3 w d創建好.htpasswd文檔後(可以通過文字編輯器創建),下一步是輸入用於訪問網站的用戶名和密碼,應為:# [* n8 l" \) D8 }% O
username:password
: z/ X( H2 O* F& z9 ^4 P% f. m& O$ s「password」的位置應該是加密過的密碼。你可以通過幾種方法來得到加密過的密碼:一是使用一個網上提供的permade腳本或自己寫一個;另一個很不錯的username/password加密服務是通過KxS網站,這裡允許你輸入用戶名及密碼,然後生成正確格式的密碼。
5 s$ m" P4 o ^8 J i7 Z對於多用戶,你只需要在.htpasswd文檔中新增同樣格式的一行即可。另外還有一些免費的腳本程序可以方便地管理.htpasswd文檔,可以自動新增/移除用戶等。
2 W4 O* N" x* c訪問網站% }9 o$ j) Q( c4 ` Z& A: j
當你試圖訪問被.htaccess密碼保護的目錄時,你的瀏覽器會彈出標準的username/password對話窗口。如果你不喜歡這種方式,有些腳本程序可以允許你在頁面內嵌入username/password輸入框來進行認證,你也可以在瀏覽器的URL框內以以下方式輸入用戶名和密碼(未加密 的):" R2 P/ x% H5 ^: g% X1 N
http://username:[email protected]/directory/
0 ~6 ?% n# {% v3 \ H, M+ e( p8 l. `! m7 Z. A! ~( d: n4 p
小結7 n) k& w% R% ` S. ]
.htaccess是一個站點管理員可以應用的強大工具,有更多的變化以適應不同的用途,可以節約時間及提高網站的安全性。1 m/ O2 \: b, r7 B; n4 d
相關閱讀:
7 z6 F8 H6 v- s, E5 U/ KKxS Password Encrypter
* Z" w' ]' ~. @% Q5 j+ j$ UApache .htaccess Documentation
0 s$ X3 T! U( N; Z" ~. sMore .htaccess Sites \/ b6 M( w" r0 Q) x m- R
Related Reading
0 @- B( _9 n+ Y: p8 l: g.htaccess的特別說明! v7 r, c. J D4 A+ h
啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,並可以用AllowOverride限制特定命令的使用8 X& q8 ]4 I% v1 F$ y0 F" z
如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在服務器配置文件中按以下方法配置:- O* b" i/ a# l: j; \9 l; }
AccessFileName .config
4 w* m5 R& W7 r一般情況下,不應該使用.htaccess文件,除非你對主配置文件沒有訪問權限。有一種很常見的誤解,認為用戶認證只能通過.htaccess文件實現,其實並不是這樣,把用戶 認證寫在主配置文件中是完全可行的,而且是一種很好的方法。.htaccess文件應該被用在內容提供者需要針對特定目錄改變服務器的配置而又沒有root權限的情況下。如果服務器管理員不願意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在同一個機器上運行了多個用戶站點,而又希望用戶可以自己改變配置的情況下。雖然如此,一般都應該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。避免使用.htaccess文件有兩個主要原因,即性能和安全。 |
評分
-
查看全部評分
|