打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法 9 s( v0 l" P9 P! K" i. r

( l' ]) H( ~1 X8 G( G.htaccess  A% C% b3 L! O. O5 D, e: `
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
8 U4 }* [  ]  e; ?7 r7 X9 Z.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
' q( `  _' ?. B--------------------------------------------------------------------------------
9 e: c, u; n4 Z" U! Khttpd.conf 的設定1 C* v- ^  ~, ^  d
加上或取消註解 (#) ]定改成 AllowOverride All
$ Q$ X! @* s9 F/ Q然後儲存及重新啟動伺服器軟件 9 `, p; g: I, s  p
--------------------------------------------------------------------------------# Z4 x2 w; k8 U) q$ v
.htaccess 的用法
3 D6 V$ ?+ I3 j: a, L# q4 A先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
, o5 a( _. `( u/ f. x用法:
" ~3 o: Y  y+ F  ~4 ]1. 密碼保護
9 }! R5 a, G1 v7 F; Z.htaccess 內寫上:2 ~0 B" r& i% Z9 [4 y2 J
AuthName "testing"7 ~/ E$ S, {+ z2 H8 Q2 l
AuthType Basic
! w, L2 K5 ^9 @$ V, mAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"9 U/ x) s2 C% Q/ C
require valid-user! T" n$ d/ a- i- Y  Y4 r
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
7 P: _( Z( p) J: qAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置  H; k+ n+ c, W5 d
密碼檔案 (.htpasswd) 內寫上:
4 w' K* Q( s4 C4 D  s+ quser1:password1
- y; i0 a* {& m/ |1 [user2:password2
4 Q" e, V% x0 t& c但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david2 W% ?1 G4 A3 x+ g8 }3 J8 ^/ g8 D
( B0 C& l2 \' R' `* `( T- Q: R
2. 自設錯誤報告文件
7 v. A1 ^0 U1 X; p.htaccess 內寫上:+ j2 C1 _7 z2 A' h4 X7 q7 }
ErrorDocument 404 /404.html
$ Y- w. |+ G/ y# f/ u如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
& a5 }4 f4 q. d; a' r% f6 p1 kErrorDocument 404 "<html><body>找不到網頁</body></html>
! c1 e. d/ L/ E4 NErrorDocument 500 /500.html
# s; k) o8 s4 W) i: a
1 @! ^% S6 [1 V/ R; x% Y3. 自設首頁檔案5 v* m* x5 b  w4 a3 L2 Q7 |" @
.htaccess 內寫上:
% R# ~; @* Q, G& o& L% TDirectoryIndex a.html2 C8 R0 z1 I# f, c9 X
首頁檔案便是 a.html 了
; |  ~' e0 K& q0 u9 n6 N) p% E. g0 ^1 G2 {3 r# h
4. 禁止讀取檔案/ I; P# }7 a( v  B+ L) i& R- L) P
.htaccess 內寫上:% _+ i' V" Q  i6 Y8 E4 t" z6 X
<Files secret.html>  K  n' q+ ?1 T
order allow,deny
1 t/ ^  o. F; l& Z; v5 c$ Zdeny from all- e6 j" I( ^  x6 v
</Files>+ T4 C7 T4 Q; p
deny from all 即所有人皆不能讀取 sercet.html
; l+ N. Z8 h$ R6 v
* D; E% U; M4 s6 T+ s而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch0 D$ f$ f& ~* @$ @) l
.htaccess 內寫上:4 e6 A+ l! n' u+ H
<filesmatch "\.jpg">4 F* s2 o$ Z4 q: ]5 n7 a4 A, z
order allow,deny
+ P) b/ t7 s, |3 odeny from all
& V6 L! p, `3 z! Z4 g</filesmatch>
+ R9 t* @' m5 F4 F1 o即所有人皆不能讀取副檔名為 .jpg 的檔案6 p" p) ~4 ]* S: }/ I2 r2 A' k- L
3 ?. ]) O0 T9 k: k( g
.htaccess 內寫上:
$ o" [( P/ B' u: u4 x<Files secret.html>: I3 S- ?) y! M  X8 q4 @( f
order allow,deny
  s- }; L! B  W7 w. s: Mallow form all8 W# [% T  D$ Z) y9 G
deny form 202.202% L( b" {4 J; n3 ~; h9 V
</Files>
) G$ I; o% C5 L; j+ ^1 n即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案5 \- h8 i5 C& ~
' q1 m. P  }7 A+ ^
.htaccess 內寫上:
( `' T1 Y3 v' K" Z- Y9 v* {- e$ X: }3 G<Limit GET># W, I- {) |1 V1 W$ E4 m& F
order deny,allow- m3 c6 k9 L* N9 W2 m4 U0 p+ V
deny from all( c% D3 S# a7 j) ]4 o
allow from 202.202 domain.com
! o& J- W6 F6 z: V</Limit>
- H6 k/ _' q6 S即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
! B/ @: n  D# l# a1 q3 `
: \$ k3 |% z& p3 e- H  i.htaccess 內寫上:2 v0 z' F% H: N* H. w$ r
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
2 r: t  k3 `& q& [# E$ M' }<files sercet.html>- W) N% X$ u% B3 v+ e% y4 c; l$ g
require user peter0 \  D2 ~3 b' q5 T/ _$ B  C2 L; ?
</files>
) u1 c8 b9 e, e( ~' k* s即只允許 .htpasswd 內列出的 peter 讀取 sercet.html& Y8 B* @3 M% n# X/ d2 X
5 S1 }- Y6 [. Y8 s* u( E9 k$ q; n5 h
5. 重新導向文件
8 y$ K! e. f; }/ z5 F/ g+ E, V+ ^.htaccess 內寫上:; Y  R9 y( y+ m
Redirect /old http://url/new+ f; ]! h; m+ t( R( Y
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:& i) O- ]5 V/ W" C/ O$ ~% V: U* I
Redirect permanent /old http://url/new
5 D0 z4 d0 @4 Z. ^# B當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
( Q6 D0 Y& C" j6 z
' U* @+ `. X2 X0 [3 |. g6. 防止列出目綠內的檔案4 w! j7 c0 L  f% q: e
.htaccess 內寫上:! j: }# M1 |5 ^9 k2 @6 ]8 l
Option -Indexes
3 z2 n4 h  ~! Z+ R這便不能列出檔案目錄了; V" ]" n/ l5 m, \! o( E
.htaccess 內寫上:
- U$ {9 c3 L: l* L3 `9 TIndexIgnore *.zip *.txt- o: [8 a) r9 I$ E
這便不列出檔案目錄內的 .zip 與 .txt 檔了
% D6 s2 K( L: {2 ]/ J6 ?4 E  @2 Y6 i( M5 v( O2 G1 b% u1 h  z' f
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: 5 R# w5 W* U! c9 k2 y1 d6 ]

1 |4 ]% f, _- w6 i6 @% b7 `# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
3 E3 A: F' X8 {1 x! sAuthName 阿達的祕密基地 , \8 S5 ~( i( s1 W9 z# k
# 編碼方式,目前只支援Basic一種而已。
$ K% F2 R3 m$ @! ]$ ], q! C' FAuthType Basic . ]- L& s9 l" L6 i5 Y7 @  E! X
# 密碼檔的絕對路徑,可用htpasswd指令建立。 8 z8 P! ]7 l) D, G0 ?
AuthUserFile /home/.../filename
& h$ t8 o7 j7 ?0 q) ~# 若下面有指定 require group,則需要group檔的絕對路徑。
+ {4 p6 D2 I1 K0 Q; U. T/ t1 N1 _0 z8 DAuthGroupFile /home/.../filename
) |' [2 ?4 r4 ?0 F! w' f! s! P9 x; b$ P1 B2 x/ T
<Limit GET POST> . Y% `9 p& v+ d% Z* v
require user user1 user2 ...
& r. ?% P8 }7 @require group group1 group2 ...
8 M! I+ F' H/ G- J, X- n, }</Limit> ( r5 }. e6 k7 X! v$ h, d4 E& B& a

; m$ U$ a! D; x. s9 a; g1 ~- R7 t! B& T
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:
4 \) Q5 t" X4 [* c
2 z: q: ~! A. y0 N& x! K* fgroup檔:
  F8 d, d) D! |  jgroup1:user1 user2 ... 8 a, E7 v6 B$ |
group2:user3 user4 ...
7 x6 S: f, r- y& y...   w& `  p/ T4 E9 j0 t3 T) p" d, ~

4 ]+ [  t% u1 W+ {passwd檔: $ F! n0 S( H: h& P0 q, a
user1:password
4 ]9 `6 G" r- S2 V( fuser2:password
% Y  A) L, @$ P$ a... 1 @& C  d: _. Y9 M: b  a

; n" j  R! W! t! m密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 3 ]: `. m( L9 L! _7 @: z

2 r. @9 n1 ]. p- e% Z& d/ X另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
8 f$ G' u( y7 F- c  A% E% l5 e; Q/ w/ a! o$ V: Z
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題