打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法 * r/ h- |' l  H* w, |* N7 y

6 V! b/ N- _* v0 Y# ].htaccess
! I# s$ G- ^" e0 n; q# L7 t( I5 ~0 _9 ?.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了' n$ |/ ]( c3 S0 z3 u
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件 ! l+ |& S, }7 ~6 B
--------------------------------------------------------------------------------
/ S7 a+ x; Z/ F5 D, h; ^2 h! Rhttpd.conf 的設定( J8 F- V$ R# F+ t( B8 ?. o' z* {5 c
加上或取消註解 (#) ]定改成 AllowOverride All
/ U% O' L* s* h6 o' Z  @$ Y. z然後儲存及重新啟動伺服器軟件 ; E* i# C9 V9 K
--------------------------------------------------------------------------------7 U- L) ^( ~3 @! D# i1 k
.htaccess 的用法9 \# d+ H, ~3 W. t4 `$ @2 E
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)! v8 X% f5 k" B+ {- r( R0 w
用法:+ L4 u# `" E' q2 ~. R8 U+ u
1. 密碼保護3 U0 L7 V  C; {' K% ~
.htaccess 內寫上:
5 l  [0 P/ A/ m/ n9 T) _! WAuthName "testing"
) }* {4 E. t/ J, n" lAuthType Basic; t, ^9 G( o4 c5 ]) L0 W) F2 m' C
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
& c- V, E$ K4 ?4 O+ drequire valid-user. n1 X2 t- s( [8 r  o0 {! S$ {
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
- V! H# c& ^# K4 B9 i+ d4 K# iAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
3 i9 B  T+ ~; G0 G# v) V, K密碼檔案 (.htpasswd) 內寫上:. ^0 ~; a6 ^5 `8 f, W7 b: [) y
user1:password1
3 [, D8 i" o9 N( h( Uuser2:password2+ E) T. F  E, [' b
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
- x( Z, h( r3 F1 C
  n. d2 M4 E& x. R' z/ q+ M2. 自設錯誤報告文件: c! E! i: Z+ w8 j5 F- z7 x( M. ~+ ?3 X
.htaccess 內寫上:  F: a& n  ~1 D3 {( L
ErrorDocument 404 /404.html- o2 T5 ?  A  m+ c# T
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
0 ]; S0 L. b' P3 d) w% v# n4 v* Q$ dErrorDocument 404 "<html><body>找不到網頁</body></html>
4 s  j; }& }: g: qErrorDocument 500 /500.html2 t/ E# @; y+ y  v3 o8 Q

, W, n" d+ [3 g- S; _3. 自設首頁檔案6 W, G4 D7 \2 e
.htaccess 內寫上:& u0 R( d0 p: ^6 c% C' \* t
DirectoryIndex a.html4 R- l- u& R7 p5 H7 G$ c8 l* d; `
首頁檔案便是 a.html 了  f  ~8 U8 x2 `4 Z" S% g
  _/ f; I* @% v$ o
4. 禁止讀取檔案
! d2 y! h: j5 E, P/ L% L. U0 s5 H.htaccess 內寫上:
* R) G& j/ M8 h<Files secret.html>
: P0 g; a$ W5 h: i# u- T/ \order allow,deny6 i7 Z. q, u/ x( O0 P9 a9 C
deny from all* g3 }: x. Z% @' u# C6 w* }/ Z; Y
</Files>' T2 L& M! h# T  |# M" t
deny from all 即所有人皆不能讀取 sercet.html! A. m2 F6 W  C, H9 S
) b( F9 c8 D0 t: b9 m9 ]
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
1 f% B4 m/ Y5 T( |.htaccess 內寫上:5 [$ ?& R  ~& B3 G2 q
<filesmatch "\.jpg">
5 _- U  `) g9 ~0 H$ ]order allow,deny
: ~* }" L7 t) l4 G0 H- F: b0 ]( sdeny from all
% W4 {& Q- v+ v- O# P6 g</filesmatch>5 f8 }# o  b1 S  T8 O+ L6 t0 Q
即所有人皆不能讀取副檔名為 .jpg 的檔案
# q5 i# ?0 y3 H3 V6 G+ j' G% r( ^3 n+ s: d% J
.htaccess 內寫上:8 q# }: v* ]' t& c3 r) C
<Files secret.html>
2 g% Y5 s4 ~/ s* B# E$ u' Zorder allow,deny! H# d1 x. {. o- D9 w* X! J* q+ [
allow form all5 B# P0 w- O3 ~( {
deny form 202.202
  r9 h3 o" F' n, d3 E+ p* S! t</Files>$ L& S& o. f* W& W8 `
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案% G& B2 U( d% m
! C$ C  Z& }$ k* R
.htaccess 內寫上:. y0 m& n  c: ]( i9 E! T: m0 A9 p
<Limit GET>. h, X+ H/ K6 t  F7 t$ a
order deny,allow
0 n4 j+ M7 Y& R0 M/ ddeny from all; g9 B3 p# O# c
allow from 202.202 domain.com. P7 c: ]" k0 U- |
</Limit>
4 X7 \7 S2 y, q6 [即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
& k! p3 n2 y7 Z/ t. }3 d/ l/ e3 n8 f+ F! W, F0 R
.htaccess 內寫上:- ^" A/ T8 w9 c2 P; \
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
8 ]+ N' [3 O9 ]( U- ~9 C% Z& R<files sercet.html>
2 f0 H% S& g1 K1 p! Orequire user peter5 |" u8 T# u& L
</files>
" b5 V' X- i  ?即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
# C+ t- b3 Z" T! L: Y1 D% `8 X
( ^3 @5 |  ^. j- U9 Q5. 重新導向文件
! ^, ?( g) W4 R6 H.htaccess 內寫上:
1 u, r* p7 v8 h. S" M, \. `# fRedirect /old http://url/new" t4 o. ~& a6 d/ E; Y4 m5 H
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:
1 \! b! I' n4 o) E) xRedirect permanent /old http://url/new
1 b8 Z" G5 l" j! f- h# K% p當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
( P( K) Q! u! k' D9 I
8 y* G6 e; ^6 u2 l6. 防止列出目綠內的檔案$ u$ W# L$ g! q- L1 t
.htaccess 內寫上:
' v% `. r- \& C2 ^2 ]2 K  E0 [Option -Indexes
& w$ H2 \! P; i5 J: x' O這便不能列出檔案目錄了# W( @% W! V7 R; U- c1 [' K- o' @
.htaccess 內寫上:
+ M: R( }* y, K; d& C5 O: l. tIndexIgnore *.zip *.txt" O# _; m' T3 X. F9 G( e) }
這便不列出檔案目錄內的 .zip 與 .txt 檔了
+ ?5 @" `1 i9 k, P2 p
( W6 C7 @0 X- l$ Q) D, [% u' T$ O8 K% Y註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: " R7 E" f% G) w. c
9 E3 X( ^6 A6 l( N( T4 Y
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。 0 _( K; e- _+ f9 A; s& M
AuthName 阿達的祕密基地 4 h0 |1 G$ |4 A: P: C+ J6 c. w
# 編碼方式,目前只支援Basic一種而已。 - f! \* A4 F& Q- |) A/ I4 D
AuthType Basic
  ^( l) \: ]9 z$ _# 密碼檔的絕對路徑,可用htpasswd指令建立。 , v0 |0 @$ [- e, B8 `. s! I
AuthUserFile /home/.../filename
& y, B) r/ U) P$ \, R! r" ~# 若下面有指定 require group,則需要group檔的絕對路徑。 " w7 \! ^7 G  j3 o, T* Q/ Z1 l
AuthGroupFile /home/.../filename 4 @7 n6 q# }$ h8 l: v) r
+ Y( T3 q4 Q% Y% u( h" I
<Limit GET POST> 3 Z/ Q# Q% r3 n  G7 H" m
require user user1 user2 ...
2 [( b2 T) k) ~; Srequire group group1 group2 ... 4 \  T+ Z% W, [5 ]2 T4 t
</Limit> 1 k7 N; p9 |' |8 ]

* I- Q: @3 D1 ]: @. L6 ^  S0 }) _+ h. m9 Y6 d4 i1 ?" m5 ?
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:   t* C1 |- N  A: w5 t+ Y3 ]7 B
$ b) A7 a8 f; j% W) S8 _' D( o3 i
group檔:   `2 M2 b, T) q+ Q: J
group1:user1 user2 ... 6 `: l, H4 Z* I% P. E& W' \
group2:user3 user4 ...
1 Z# b) @! V" j* I: {...
4 c+ s) M2 N/ X) g8 e, F, k( Z, s) c4 G* D
passwd檔:
8 }/ x+ S5 i1 P: i/ P. d1 Zuser1:password
0 M3 B) h1 b% m# @5 q: guser2:password
) X3 G) D* o# b7 Y* ~... ! ?9 o+ N4 t, F6 Y+ c/ {7 h/ K

3 u5 Y  F. \. k1 f! C. ?, o7 s3 S密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。
6 `7 n5 ?# s1 e' C' u
6 J% z/ P9 x! K, m4 J另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 ' \/ i/ r: d0 |0 Q# Z3 c
' d6 r1 ]) C  C6 i  b& [, @
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題