打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法 . r  U% Q; o  @! X

  z1 U! t0 D4 h  e.htaccess$ q" R1 m/ }; y, r+ d# i: }
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了) Y7 t  R. r- `
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
/ G( D8 P% L2 Y: x: z5 I--------------------------------------------------------------------------------8 S' c2 T4 W1 L1 g" p+ F$ \+ z
httpd.conf 的設定* s+ D) m; i: g8 v& \6 C
加上或取消註解 (#) ]定改成 AllowOverride All3 F+ n" D/ F+ c" U0 I
然後儲存及重新啟動伺服器軟件
! O/ W# q7 |* O& G--------------------------------------------------------------------------------
: B1 N. @6 |7 _6 Q. q.htaccess 的用法
$ }9 ]! J% B4 H" ^+ W. V1 O先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)+ P% s' y  H. Q0 F. X
用法:' P4 x/ L# C9 j/ I4 b  W7 d
1. 密碼保護& u4 c- p- |, r3 {! D& ~* z
.htaccess 內寫上:6 @" A& \$ Y: ^5 G
AuthName "testing"
% x8 H; q3 ?, A/ X8 P8 b" ]AuthType Basic  L1 {, r. b( M6 u9 ]$ ?
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
4 T% ]1 z: l$ ]9 M6 `6 Zrequire valid-user. q$ ~! Q, J2 {/ {+ N$ o
AuthName 是當你進入密碼保護時,瀏覽器出現的說明- V( E. E) o! i
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
: i! ?1 h! \2 Z! d7 L7 |密碼檔案 (.htpasswd) 內寫上:0 H0 i+ @* m  [
user1:password1
# Y! y" `( U' h5 }$ E( guser2:password24 ?; ]4 }1 p: x
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david& J3 F" L2 g: W5 A; F! g. v- C+ @

* c4 V: x- N3 E" O; z2. 自設錯誤報告文件
& n: u- H  @6 _) H' _8 B.htaccess 內寫上:0 s8 ~9 l7 V2 z6 }' G
ErrorDocument 404 /404.html
( f4 V: N( d$ w) }) J* e如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:, V( n4 i% t2 f, I8 a
ErrorDocument 404 "<html><body>找不到網頁</body></html>4 G! c) E9 ^2 H) b3 ]( w# o
ErrorDocument 500 /500.html
/ w* n* n2 v, v' _7 e% G
; s+ a. V. I. o6 B3. 自設首頁檔案3 G5 C( c9 M, O. E. q2 B3 p" S, _# r
.htaccess 內寫上:
5 h; u  D% Q4 o4 o3 T, |DirectoryIndex a.html7 e$ u% U- F' N$ v, F
首頁檔案便是 a.html 了
0 L( [4 J6 J3 q. _$ ^
( W7 X9 ]  u( t2 @4. 禁止讀取檔案
; i; j( n; E- e4 W.htaccess 內寫上:
3 m3 _/ M! k0 x0 h<Files secret.html>: U) v$ \" A! f- h- p
order allow,deny
8 r( I+ l/ Q, Y" b0 ?deny from all
2 y# K* k7 ~) U* o</Files>1 r  ~- l1 N. F4 `
deny from all 即所有人皆不能讀取 sercet.html
4 V+ a4 Q7 l* r: r8 m  N) l- p, Z; x# i; {' C
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch5 e6 z# q0 x7 M  ?0 U2 w9 v3 ]
.htaccess 內寫上:
3 Z' d# s! U5 k8 F' i. r; E! L<filesmatch "\.jpg">
+ h2 c9 p; a+ R3 p  r7 Y  _* Rorder allow,deny- G# j8 `$ n. U+ N
deny from all
( H& a$ ]+ Q' G6 p& ]$ s</filesmatch>
) N9 z9 @1 H7 V& `" d即所有人皆不能讀取副檔名為 .jpg 的檔案' l. I# {, D" O% K% h6 Y; a

+ m6 S8 i$ Y, g. G0 @* i.htaccess 內寫上:
1 G7 c0 Y! X; h! L5 h) F<Files secret.html>7 {- t- L: N3 O% |" ^
order allow,deny/ S- S2 u8 G: S$ w# i  W% K8 A+ k
allow form all
0 X( k$ n; R% U  _) D5 ddeny form 202.202
! g6 w! m" T, v% y</Files>
1 I" G$ m8 g( ^7 A8 m3 V$ X即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案0 C5 y% H+ [# v' Y1 Z

# s6 \2 ]! V" t0 d; ].htaccess 內寫上:$ }, I1 {) h+ J* P
<Limit GET>7 k1 U  n# ]' Q# C
order deny,allow7 Q7 ~+ h* S0 H" d2 b, K
deny from all
, W$ ^1 g0 h% u$ u* ]4 callow from 202.202 domain.com
' L* }% r8 R; i/ o& T2 |</Limit>
& K; k5 c# J9 }- o$ B即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
; Y5 }% K- c1 \' E! Z
. U$ Q; v6 Y7 o! ]0 x. g.htaccess 內寫上:
3 D  ]9 `% ~# jAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
) f( S" |' {  X6 r% q<files sercet.html>
4 O8 }/ ~4 s3 r, [2 B) }2 Urequire user peter" S- [7 U. J1 |, F
</files>
7 B- q1 p6 E9 \+ x" V: ^+ q即只允許 .htpasswd 內列出的 peter 讀取 sercet.html& ]& s9 _5 W8 q! R
8 C# H) U! q, Z
5. 重新導向文件
7 s$ m  Y0 ^# [+ k% ].htaccess 內寫上:
  b" o8 v2 g4 TRedirect /old http://url/new
6 p4 z  E/ h/ x! }當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:+ @+ x" u: ?! i* b
Redirect permanent /old http://url/new
7 z2 `7 f1 Y! `: i* A9 K3 T當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
/ @3 \$ I! Z  D0 n8 _5 _
! ]3 B  e' Y# `/ o" |* |6. 防止列出目綠內的檔案: X% z) J6 d8 F
.htaccess 內寫上:
+ F/ k, ~7 z2 W: ^* r4 ~- COption -Indexes
' G3 k* m' r# H% P% p) h這便不能列出檔案目錄了( o% k$ z3 w, b) D0 x
.htaccess 內寫上:
4 E3 z5 L9 Y/ m1 q8 v) \IndexIgnore *.zip *.txt. }- w+ s+ {: c- u, [% q4 s
這便不列出檔案目錄內的 .zip 與 .txt 檔了
& ~, E: @) H3 A7 C7 J) }/ y4 s4 S$ i: G6 p6 `8 K
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
/ ^8 \; f# t) X' U
/ W" j% z, W' s: z0 h( `# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。 : L$ X2 ?4 h. h; @, X0 i* Y6 F
AuthName 阿達的祕密基地
4 ?2 D9 v: Q) ]7 r7 E" q0 U# 編碼方式,目前只支援Basic一種而已。
' [; w4 {; p7 Q' Q3 [AuthType Basic
( B4 U# Q3 K$ n$ @; S$ Z# 密碼檔的絕對路徑,可用htpasswd指令建立。
, t/ A7 d1 g, q- E, |- {AuthUserFile /home/.../filename 0 O; D! N# [) Q
# 若下面有指定 require group,則需要group檔的絕對路徑。 * Q- v$ X! \% }& ]* D* d2 ?* O( n
AuthGroupFile /home/.../filename 2 w$ U! D- p3 C: Z

: p5 q- l% d: Q) M4 p4 }$ `; t" C<Limit GET POST>
. O1 R$ v3 o* X9 W- wrequire user user1 user2 ...
; w" p6 h) y" B6 Drequire group group1 group2 ...
; J* p( _6 W8 h: a' n</Limit>
0 J( }! v; s" K8 i; a; y' v! \4 r  d: m

2 E8 _1 @8 p' u4 R$ w它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: 3 A4 z2 \' x1 m1 ?% t+ p  y

$ q3 q3 ]5 O0 v: igroup檔: + f. G6 e+ |& u
group1:user1 user2 ...
/ ^! F4 i# e8 t% k$ jgroup2:user3 user4 ... 9 e! m# z& I! D/ d7 f# I! V8 C
... / ~/ K% k( t/ E7 F  R6 @  U

0 g% |1 [' i( r  L. Z4 {passwd檔:
( v, {/ |1 N2 z% Ouser1:password
6 u$ E% O: y4 L$ C5 j5 ^user2:password . i8 j& y" U; _
... 9 Z; r! @/ v; b! x8 J3 L% Y
/ g0 `! [) d% [! Y+ A% n; ~3 {
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 $ c  n; u% @5 [& Y4 [- v( S0 `

" m( T4 X, O4 F  D另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
8 @4 U4 L) h8 N& Y% x" k& J! H( S) s5 D: W9 \$ G) \0 g
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題