打印

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
+ m( s2 T+ u4 u: p, I' z
# K2 [. |2 F) u+ k; G# w.htaccess% c* f2 e8 _+ N/ [* e+ ~2 @  G2 _
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
/ V% \% j% A2 d5 B$ d$ S.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件 2 c# |0 x/ F; U, K3 C; k
--------------------------------------------------------------------------------9 D" T) S. v, g: B0 r; \
httpd.conf 的設定* N1 y. ?0 v' ], q5 _
加上或取消註解 (#) ]定改成 AllowOverride All
2 D) J! v: X. S* w, K1 K" j然後儲存及重新啟動伺服器軟件 2 \+ l- [% D8 F2 P+ Q+ ~; T% ~! O
--------------------------------------------------------------------------------4 S  f9 U" ^" D% h
.htaccess 的用法; O; \) C! z9 b" ?
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)" A8 P5 _8 V+ @3 U1 {
用法:% i. n1 N; R7 Y  L" Y- L
1. 密碼保護$ l$ P9 h; R1 R3 c
.htaccess 內寫上:) D2 ?, f, D& ^# r# Y1 N7 r
AuthName "testing"
# A4 c) q& f; r/ {8 Z' W4 H1 R8 fAuthType Basic
' V0 D# _/ ?/ ]0 QAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
6 J. t, z8 n7 U& K' }5 Frequire valid-user, F8 W/ C. @( z4 D# v9 z
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
  Z- M( ?+ [2 a; b# {4 d  ], tAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
1 L/ S- @) Z" O. k7 @0 O+ Z密碼檔案 (.htpasswd) 內寫上:
' B  l' e8 s0 e: K6 zuser1:password1+ z$ |  ^+ l, P$ ^
user2:password25 z9 Y$ k3 |+ c6 ]! D# A% v3 ?
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
+ [6 R5 M3 x( p  s' ~
9 p5 K( z  P4 M1 a2. 自設錯誤報告文件
* ~* Z1 `: E- w* H# K.htaccess 內寫上:9 h4 R8 {( D. W: p% ]8 |
ErrorDocument 404 /404.html  V! p+ J; a0 t( O* S6 Q0 p
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
" v8 K$ G) {) C6 p5 xErrorDocument 404 "<html><body>找不到網頁</body></html>* S( Y4 [9 @7 c1 T
ErrorDocument 500 /500.html
  [/ q- J: I3 P8 `/ j5 l' q$ k( j( C2 L6 Y" c& b6 y. t0 c
3. 自設首頁檔案9 c7 U2 _4 C) ^, v0 b* z, N/ U
.htaccess 內寫上:$ h: c7 j2 M8 e% |
DirectoryIndex a.html+ A* a4 h# g0 ^
首頁檔案便是 a.html 了
- `# m% E/ s8 A1 g' Q" l6 \3 A( a3 Z
& |1 R4 T* G5 l8 ~# I- p" {2 W$ w4. 禁止讀取檔案
; _% y; U+ s) ]  P$ N.htaccess 內寫上:6 r$ u9 O4 L! G9 |
<Files secret.html>& F( i% p+ w9 Z
order allow,deny3 i$ u, T& T+ O* m9 Z; a/ r
deny from all  V  w9 P( T! ^, {8 ?! {
</Files>
5 [( R  F! E+ W4 C' Pdeny from all 即所有人皆不能讀取 sercet.html/ M) ~; _9 {' w% F
$ l7 {2 M9 V0 Z& i
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch8 G9 S& @3 _9 U' m
.htaccess 內寫上:
% b( Y- S/ S9 u' R0 T/ L<filesmatch "\.jpg">
0 F% k8 i5 p' P/ L6 \! Horder allow,deny3 u. \7 x; ]+ c  o1 [; E" }7 C1 V3 ^8 F
deny from all0 s5 _- A( D6 q) {5 i" ]% v
</filesmatch>
2 F8 J$ \* Q# y( Y! q+ j, G, M即所有人皆不能讀取副檔名為 .jpg 的檔案. a9 M5 i5 H. v' E# v* a8 `2 @

) V$ M- Q/ B9 V1 N% Y.htaccess 內寫上:; B- X: m  ^; z
<Files secret.html>7 C' x. o* Y8 w: m2 D/ H& L
order allow,deny
$ }9 m! o. N+ l! _& X( q0 e, Rallow form all
3 U8 ^/ T" L/ B" S# Ydeny form 202.202
8 u9 a7 N# u( y</Files>; L/ b* E9 d* c+ V' u' Z, O
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
' p1 c* v& f0 g- A: S" ?
& e$ w: ^* ^: Y) e# W.htaccess 內寫上:& N; A" L+ y; k2 [' x
<Limit GET>
  X9 z& s  G# f+ D1 C6 Qorder deny,allow% |% B) N! a* j' h5 z3 u( c2 {
deny from all
9 L3 g+ Y; E4 x) R  [7 Nallow from 202.202 domain.com( Z2 d, W, J; K
</Limit>& S$ u5 t. X9 t
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
* Y; }* @* g; W
& |9 {  ]7 n9 s! J% K.htaccess 內寫上:5 n2 i9 k, B- P* J" s
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
  U* G: N0 r# R7 X8 s<files sercet.html>
+ Y8 N7 d* M! I& n2 V6 Irequire user peter) d& P( o8 f$ U& A& j) ^
</files>
5 G3 `4 Z0 `  S3 M& Q即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
& K3 M) l( h+ [$ }& O% W! F0 {5 z$ ]) C3 k) D' Z' k& a
5. 重新導向文件; `5 d, Y! Y" F$ ~
.htaccess 內寫上:
) o: p; O! c2 g) _Redirect /old http://url/new8 J7 T8 b3 [7 R
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:+ Y* X6 h; \' b2 `
Redirect permanent /old http://url/new
) W2 u9 Z) x+ O6 [4 Y( B- l# m# e當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
5 m4 `0 d0 Y4 d6 ?1 F1 i7 v+ i6 g9 q# q% m) C5 C
6. 防止列出目綠內的檔案% k6 O& H, L6 `
.htaccess 內寫上:
: _" T! O4 y4 G$ `, R) o* KOption -Indexes
$ j) X% B$ m% d# }3 d" z9 m) l/ e這便不能列出檔案目錄了
% b( j- e! S" D5 t3 U. [.htaccess 內寫上:) A7 L7 A6 v9 y  t
IndexIgnore *.zip *.txt
# W# m* R( x* ~5 j3 r這便不列出檔案目錄內的 .zip 與 .txt 檔了
  h3 V) C9 E6 L, v- M7 L7 x# {. E. y" c" J$ C+ v
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
* O- f1 _) [, P" @4 V6 d0 g& V- A9 j. ]3 i2 v
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
$ E6 S$ i3 e& e- l/ k$ m, eAuthName 阿達的祕密基地 4 x* \6 H! \* t: f) L( |. T; J
# 編碼方式,目前只支援Basic一種而已。
) f4 M( x) C; H; v: IAuthType Basic
4 s" U' _6 C& Q# z# 密碼檔的絕對路徑,可用htpasswd指令建立。
# t8 f. j% K" Q9 M' j& r2 ^AuthUserFile /home/.../filename ) X1 Z+ @: t% {8 r. j( y% W
# 若下面有指定 require group,則需要group檔的絕對路徑。 ; b2 O+ T3 l% a, S8 w- E
AuthGroupFile /home/.../filename
( Z; {' N1 `) J. J
" F, q+ q0 f% R<Limit GET POST>
+ g- F) [. M/ o! T$ ~require user user1 user2 ...
1 x) e" D  A" m, x. orequire group group1 group2 ... ) }; p; N7 I4 z+ z" |" q. `) e
</Limit> " w1 O& a) S* r0 ?( b% w
1 Q7 u4 q2 \1 {) W/ C/ r

" Y7 t" q7 g% e8 x. c. e它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: 0 M. g9 [) }' P' q0 f+ a3 T( P
4 X3 U+ b! a. ^2 a$ [9 O
group檔: 0 s3 \9 l" ?- r/ G
group1:user1 user2 ...
7 w6 ~! t) e3 t+ q' Agroup2:user3 user4 ... ( D7 P' `) t$ h3 t) e8 k6 I, p
... * V* t/ `; b7 B5 u
$ Y( ~; d& A$ |; V* Y
passwd檔:
& i2 E2 k( T# ]( @7 Iuser1:password 1 l, `* k9 S+ r7 C, k* i' {
user2:password
9 w. |8 U! ]. L3 W" F" V& X... 4 t& i% H5 F6 V6 s
6 c- T% Y* \9 V* Y
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 6 S. [: U( a% y  A: t% b  C. v' q

1 \0 X9 k; m9 N0 l- B- u( k另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
/ b( o' T: p8 @4 N3 \0 n& r0 K) ]# Y& X& r9 t1 J7 V$ U0 V
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題