打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法 0 b- W% Y1 b) ?' X7 S
  h' m" b, v/ f: u7 t, n; i
.htaccess+ s% v' {; c8 p$ ~% A
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了8 l8 Q+ v1 B6 ]) ?6 ~! i) O8 F+ l
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件 / R7 i- ~& T. u, e5 b% M! \
--------------------------------------------------------------------------------
: A2 B0 J0 ^+ F& Jhttpd.conf 的設定
$ m" ]/ J% G/ x$ x; i4 Q) N" T加上或取消註解 (#) ]定改成 AllowOverride All
3 l* E$ M7 n6 M0 k然後儲存及重新啟動伺服器軟件 0 Y1 A$ T' |* T$ |, X" ]
--------------------------------------------------------------------------------5 l, A0 R' ?3 N7 _/ W9 W5 t
.htaccess 的用法* ~' a% q" C* c. f3 M
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)2 i7 F- T: f! ?! j5 v
用法:
- m4 R( F% D6 q8 I" m; V1. 密碼保護/ J" x, |4 d: B0 k$ Q+ v
.htaccess 內寫上:" g9 d/ z7 V+ y# c
AuthName "testing"
; q! V# F) M! m3 [! S9 O; l5 kAuthType Basic
# ~( r! Z: G3 X) ^7 Q+ HAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
! c$ C: s7 d2 E$ {  Zrequire valid-user
# k) }! H, \, F3 R8 Y6 B. D# g) ?AuthName 是當你進入密碼保護時,瀏覽器出現的說明
# w* M' b( |' Z7 r1 e& }" }8 A9 _AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置' ~! y& N; l4 C- E  y4 ^: q" I
密碼檔案 (.htpasswd) 內寫上:8 m4 Y) |# t' T  K
user1:password1
+ f0 \0 S) P1 R7 S# w, K, |, ]user2:password2
8 e# _1 B3 V+ q但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
% ^3 a! N) C: f+ x; R+ B
2 w5 j4 N" {" y2 A- X2. 自設錯誤報告文件, D: `$ V+ z2 Y' P( }
.htaccess 內寫上:( K4 X  {1 O+ Z& i
ErrorDocument 404 /404.html6 z2 v3 L( _! e( B
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
# h5 J5 F+ s6 L+ w7 h6 d# pErrorDocument 404 "<html><body>找不到網頁</body></html>' n& n' E$ U8 }# \
ErrorDocument 500 /500.html
3 Z/ w: C% _9 S( @
& q" y: N7 C4 [$ b3. 自設首頁檔案- q: E: [7 x# N3 E3 d, H
.htaccess 內寫上:* ^+ y: K; U$ Q# n# y+ T  k8 B
DirectoryIndex a.html
0 O- l& t* U0 G0 |; ~7 X/ G首頁檔案便是 a.html 了0 m4 n1 ^: H# Z% h7 H/ C
8 g: |2 T9 C1 G6 A% ^+ R6 p  Q& ]# r
4. 禁止讀取檔案7 w; g- ~; C+ A& z/ h# u
.htaccess 內寫上:0 G0 \2 c; s+ d3 h0 Z9 n  @$ F4 |2 d9 i* g
<Files secret.html>. E7 [$ T  m  ]* k( h. o0 d
order allow,deny1 X; F6 w$ L$ m7 z
deny from all! M; ~& D& p1 Y
</Files>) X& s( \- k: [- }9 x
deny from all 即所有人皆不能讀取 sercet.html
6 f/ R4 R# f8 e2 }, s# `0 V- a; {5 G1 e1 ]
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
& z1 {* ~3 \* @  r0 d' Y.htaccess 內寫上:
; P* d! C7 i' @& b<filesmatch "\.jpg">
0 j* Y4 }- C" d/ R9 }order allow,deny' E, n0 E2 Z; J6 q$ \5 J
deny from all$ M2 A0 Q% N& o0 y
</filesmatch>
8 t- b/ J* i8 d+ ]2 @即所有人皆不能讀取副檔名為 .jpg 的檔案
! g4 m; f( R# |* F( w! g" D2 M/ j" }+ E
.htaccess 內寫上:
+ r2 e1 a/ @  [$ o4 i. H<Files secret.html>
/ Y+ Z" M3 s. g5 o/ `, [order allow,deny! f" e+ o, s" L0 J" S4 _# G
allow form all
' @* X; E2 ^$ ]& sdeny form 202.202# a# _* z9 v. l2 h7 `
</Files>+ z+ G: O7 C7 Y3 @/ G! Z
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案4 r( [" T; a( c" x. O
* f8 C0 f2 r2 b/ H& t: Q# G
.htaccess 內寫上:+ k; z6 j) |) ^
<Limit GET>
" n5 Z# s* T$ i" ]. C- iorder deny,allow
9 l2 {7 g( p8 i5 f; h! Pdeny from all* A2 @, y, I5 a" c7 R  w: q7 v/ H& ]
allow from 202.202 domain.com" S5 G! \- U0 Z: D/ W8 ~: I! g! A# U
</Limit>
3 g/ V, \1 m' R$ b4 X" h即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
; i4 b: d6 z; @' t
) r. H% R0 u* O1 K+ M.htaccess 內寫上:
. B/ L* K/ c; \' Z: _# ?AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
# J3 c6 W9 ?' q$ [3 _6 N# Y/ s( `<files sercet.html>$ l# ~) y& D; ?  E; r% y9 m
require user peter
1 [- N8 A. K. @' W</files>0 ^/ P5 a4 ^/ L+ x. \; ]0 u
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html; ]4 m9 q, h6 p' q, W

0 |  @! q% I  \' X4 E: P+ V5. 重新導向文件* {: A+ W* d: t9 H- ^
.htaccess 內寫上:7 Z3 D) D0 v* c8 S3 Q
Redirect /old http://url/new9 D! @( t* e7 R' z+ |5 V! |* l
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:
4 x9 }4 ]) `& E# w: h% kRedirect permanent /old http://url/new
$ s/ [0 X* v! c; C1 ^; s' M) X+ I當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
2 y) \; e& l  l2 t9 |+ u& b3 i8 w6 L- t7 y1 Z( G9 k: y! J
6. 防止列出目綠內的檔案2 I, }) B" e; T, e
.htaccess 內寫上:- q2 @% x1 G7 K
Option -Indexes, X* \) f& i4 \0 i
這便不能列出檔案目錄了  }% @  U1 u4 y' z" i
.htaccess 內寫上:
3 J! D# b8 X- O" G0 `# z& I. A0 y4 E$ oIndexIgnore *.zip *.txt. G$ F  S( h- S  K% w
這便不列出檔案目錄內的 .zip 與 .txt 檔了$ ~. M# t% G: l) J+ ?

1 y4 a" D8 j5 L% ?0 z0 x' m% W2 A1 \註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:   ~$ D7 r' S: u2 C( F$ ^, L. Q2 I0 O4 H

( i' h9 h% Q( @% B# M5 q5 p# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
/ m# ^6 P* T( u$ J% R. CAuthName 阿達的祕密基地
" h  v: u+ T3 O% C# 編碼方式,目前只支援Basic一種而已。 ( f; w% b/ m+ @8 J# p3 S# j
AuthType Basic
- v  X6 |5 j: ?- V/ i# 密碼檔的絕對路徑,可用htpasswd指令建立。
1 A' ]1 w& y& U  J) KAuthUserFile /home/.../filename
$ i7 z! x( u1 F1 \# 若下面有指定 require group,則需要group檔的絕對路徑。
, _8 j+ C+ Z) O8 ^" P. f5 J+ PAuthGroupFile /home/.../filename
9 X; p' \) G% G2 R& V. K
" a5 x; [4 O% u5 R% A<Limit GET POST> 2 @6 v( O- V: J: J+ S/ P6 |
require user user1 user2 ... 7 i' z' R5 g: N6 i7 q; X
require group group1 group2 ... 4 }" {  c7 T5 }3 b' ?
</Limit>
5 b7 {! Z  S# [% U
4 G* g' N' y: ^
; B" [& Z2 H; z6 H5 q* J( M: @它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: 4 j$ R4 T! O5 P* D5 Q4 P8 A
/ `& i; J9 L5 V1 V
group檔: 8 [) H1 a. O- C- e! r, C1 G& Z
group1:user1 user2 ...
& w! \/ y3 `! X0 Q9 u, Cgroup2:user3 user4 ... 0 D+ E* e) f$ h6 Q
...
! }1 I+ k# [  ]8 T' x1 m" V
' E8 _# s. a9 `9 T' E; c0 ?1 Mpasswd檔:
+ C: h3 j" `# P) w: {user1:password
7 Y: Z; f% H" c  @user2:password
5 _2 C, C& x! ~, Y...
( ]- A; [$ C! v8 m2 e* z6 X& H. H3 O' ~( w( x( C! J' O
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 6 S: Y- r9 L# U

: s, j3 Y+ j; \3 Z另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
* K8 d9 w; C: ]$ r
3 }; o4 {' b( @; |4 }! q! [OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題