打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
. Z0 e7 a. ^9 J8 c4 z2 x9 w
0 y' u- w( z9 N1 ^- _+ y9 k' m.htaccess6 U& V/ ?( O3 O, c. R* e# m4 ^# [
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了" n  r( `- [% b6 P9 |' Z
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
3 N9 M! @1 C, R; L; r0 b! p% d5 W/ K--------------------------------------------------------------------------------
6 _, X9 u( S1 F. Yhttpd.conf 的設定
: k  u8 ^0 y( h7 [9 b加上或取消註解 (#) ]定改成 AllowOverride All
/ [' {; p+ A+ z+ l" o9 g然後儲存及重新啟動伺服器軟件 % n, a3 \, C# c: ?8 n9 s+ p
--------------------------------------------------------------------------------% u4 L( F0 @+ \5 Z+ F
.htaccess 的用法4 p  h; J; Y9 ^
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)0 s6 c9 V0 c# P" W5 T  T4 @! ~
用法:
1 `$ z" a7 W8 ?8 c1. 密碼保護9 p! V- `7 v) K# t' D( S
.htaccess 內寫上:" I7 ~$ {  T: X$ _- \
AuthName "testing"
2 O; C  ?: i) F: @  C. E1 J# D/ \. e, cAuthType Basic
$ s: P+ ]/ R; v! }! gAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"! e$ C# M: M& x$ k3 }
require valid-user
# F" B$ F* E3 Z3 B; lAuthName 是當你進入密碼保護時,瀏覽器出現的說明& G. W% X1 j$ d0 ^) i1 B0 c" J  r$ o
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置* `  E0 K* ?- ~) a' b
密碼檔案 (.htpasswd) 內寫上:
+ a$ T! d/ b) @- T) _user1:password1
; j2 {, Q! W2 C. ruser2:password2% b7 @# _  o' d" b1 r; F1 Q" p
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
0 j3 R+ G; h5 Q9 Q5 c% t
; O2 u( ?" ?2 t9 c2. 自設錯誤報告文件
) b# O& v1 s, A1 z3 w.htaccess 內寫上:
% C, k& b8 w2 P, }, aErrorDocument 404 /404.html
0 H& c2 G6 M2 ?- Q# i* U- ?! v  l如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
- s0 R1 o" i1 \" J0 ~9 EErrorDocument 404 "<html><body>找不到網頁</body></html>
& M, K: B# G* ~ErrorDocument 500 /500.html% Z8 \) s5 N  _1 t+ k

+ g: L9 I4 c, ~" z! _5 T* Y3. 自設首頁檔案- Z/ q5 V; f. i
.htaccess 內寫上:
: J# ?+ v( j1 o4 `5 |7 H# q% YDirectoryIndex a.html
. ^' Z* l  o7 a6 q首頁檔案便是 a.html 了
( _' }8 r1 }! L& R  G1 S9 y8 \
3 l3 e: v$ e% r5 G1 j9 ~8 f( o4. 禁止讀取檔案0 n+ y8 Z6 V3 k5 _1 @% ^
.htaccess 內寫上:
% k/ u) N( Z! E  N4 ?<Files secret.html>+ t8 r9 t2 }0 \1 Z& g( h
order allow,deny0 w  V. J& [' A$ _
deny from all
  `# c! D' }4 C: h</Files>3 X! f7 Q. G; Q; C+ s/ P! W
deny from all 即所有人皆不能讀取 sercet.html+ L' _, c5 p5 z1 L& G! b
! j& S  G) y  F8 |
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch+ r7 l, t1 M( Z% n" c: d* F
.htaccess 內寫上:, O; ?' R; K+ k* \+ y! c) f; r. Y
<filesmatch "\.jpg">
% b8 n& I& r1 E% _  Uorder allow,deny
& N5 P, w9 n* H2 c/ M1 Vdeny from all
4 r* M$ e2 r, ?+ F, {5 w</filesmatch>, o9 O0 u( W) F0 n3 h) u6 @5 r1 X) X
即所有人皆不能讀取副檔名為 .jpg 的檔案
* x7 E) |2 @' u% u( k- M5 h; l8 ]: s  K+ \, v$ ^
.htaccess 內寫上:9 g% i4 ^; [5 a; V4 l) I
<Files secret.html>
9 c' z0 ^7 R1 @% q: J" A7 Dorder allow,deny5 y8 m( S: z) {1 \9 o  @; H) e
allow form all
( d5 l/ g7 W5 {7 ?/ F; wdeny form 202.2022 ^; V6 |. C7 {  a9 d
</Files>
) M0 C( P' Q: D; I. F即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
7 B* Q, u  {- q1 ]
7 v+ p9 g# ^  {.htaccess 內寫上:3 w: E! r& ~* H' P  F; M
<Limit GET>8 \  x7 b" ~4 u; o- [+ [  c( b
order deny,allow- |9 `9 h7 a& s8 I" v
deny from all
0 ?6 s' T" v; [0 l; |; v6 a5 O8 Gallow from 202.202 domain.com8 {9 _$ ~% D! _: _7 B
</Limit>3 u+ J( H8 b/ s- {. N
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容5 L# I  i7 o7 B- M3 r% f. O% N
$ e, V* \! D% O" A$ P9 s: u$ \
.htaccess 內寫上:
& t1 ~. N) \. S" v* lAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
9 J7 {; u7 Y, h% r+ r& i<files sercet.html>
, ~/ ?4 X  M: }: d- Grequire user peter
" l0 R: Y- z: d6 N0 {! P% M; Z: E</files>% D  N* Z$ j' a( C- g
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html* R3 d( K1 n$ t/ h- u2 n1 ^
! c: Y4 p2 K. U9 n5 Q
5. 重新導向文件
. R  J! q( x2 z3 P.htaccess 內寫上:
4 f' O3 W, ^. @; o: F" l7 dRedirect /old http://url/new
% ~5 B# q# e/ E# z+ F6 e1 |當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:
0 ^( z; H# c7 `Redirect permanent /old http://url/new
5 W2 Q) ]$ n0 T& R, B當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new, v. D3 u2 a6 m: V9 @8 H$ ^5 Z

0 h' Y1 D# ?$ \) w6 E6. 防止列出目綠內的檔案, v& ]7 J0 u, L& N* j
.htaccess 內寫上:' _0 h# X( c4 h0 y. |1 @' H
Option -Indexes
$ N6 w( v9 ~: |這便不能列出檔案目錄了, d1 F- h4 F6 V' V9 D8 Y/ a8 I
.htaccess 內寫上:% P, N; l! s. D) ?) C  d. j. D: F
IndexIgnore *.zip *.txt
  l( C2 z' }, P( `# y1 I. h這便不列出檔案目錄內的 .zip 與 .txt 檔了
' q. }* g" ]" s$ R) y
. y) e% F* P4 j( o( A2 K註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: & X" n6 z8 G% ^! u+ m2 b# h) _

7 G9 b5 n: k$ h# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
' R0 R6 e4 b7 D4 L3 e( ~/ [. C, G9 MAuthName 阿達的祕密基地
, {* _, y2 m/ @9 J# 編碼方式,目前只支援Basic一種而已。 ' T/ L/ v, f. `  ~
AuthType Basic ( ^3 m9 F- t& \/ S- m  g- P! w; L
# 密碼檔的絕對路徑,可用htpasswd指令建立。
* @; Y+ _  h; l0 Z( B( o( uAuthUserFile /home/.../filename
* V5 L, y; P, p1 i! o6 r# 若下面有指定 require group,則需要group檔的絕對路徑。 ) ]4 d+ S; y( s! {( Z" e6 G% A4 j, e% _& V
AuthGroupFile /home/.../filename
( b- ]" J% \# }% Y9 s" x9 y3 Q
. x" E1 u; Z$ \/ D<Limit GET POST> / p% z/ |! h9 t  R. [
require user user1 user2 ...
- Q- C) X' L3 Irequire group group1 group2 ... 7 J* J$ a% ~2 j
</Limit> % D: G2 [& H8 F% l' }3 g8 [/ d: e
3 D4 B& k% S& T7 h
7 _) M& N* g* [( F6 E
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: " j5 H- A& R  S: N

8 {7 @- S! [1 Ngroup檔:
% i9 @' I) @; j) g% I: C" fgroup1:user1 user2 ...
* i' m% P1 d5 |" tgroup2:user3 user4 ...
% P7 t1 u* c1 ?... # ^0 a" [/ W: q8 O" c; B
0 a3 [  d* V4 x* j" D# ], y1 v; m4 x
passwd檔:
; D3 E& M/ i0 E0 {& N! muser1:password
3 x$ b$ l! X3 f3 muser2:password
+ B, u  z: Z: o) d& V7 _: i9 A; W...
5 W# J9 Q* U8 g  R' P8 Q. A8 e! I* I8 G9 B8 D* X" j0 ^
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 4 {5 L) z( |' P& O" E0 X! x

/ ]0 \" W# T. C" C另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 & ~  e  p  M0 {1 q$ i3 @* k) W

5 x: F4 X" r" s3 R% R9 NOK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題