打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
0 |/ j: W5 \+ S( e+ {! \: p
" a* K: ^8 u7 H7 v8 R.htaccess
/ d2 Q# L* {+ z6 _) _7 K.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
) V( i, q. d; ~8 h, c. T/ g9 w.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
8 h5 b+ g  M8 a. t5 \--------------------------------------------------------------------------------
* D* V+ ~# a; X% _httpd.conf 的設定
4 N) n/ m1 R! ^7 @! T加上或取消註解 (#) ]定改成 AllowOverride All
# `* X" b8 o0 k( s% b; }1 L/ L然後儲存及重新啟動伺服器軟件
7 r2 f& t* P/ M% b) e: Y--------------------------------------------------------------------------------
, ?9 z# x* I. y/ K.htaccess 的用法2 y9 D5 U/ g4 K" w
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)7 @4 Y+ S1 P. T+ X7 }2 L
用法:( d: j9 j0 q" R4 C$ b
1. 密碼保護
: C5 C, i9 f0 d9 c1 j4 l  c. L, P; e.htaccess 內寫上:' j* {$ {8 `8 {& R( E( \! _
AuthName "testing"
) o* N0 [$ v5 C; G9 l9 B% d* h2 J; mAuthType Basic
6 i, ^1 I/ Z9 O' s6 N8 o5 l/ IAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"& H  ?% v* E# _+ d$ o& ]
require valid-user1 @; L: n6 q  ?* r8 X4 a
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
/ u( r1 M2 }2 f6 P, |% E' N# {  ^6 HAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
* V1 d2 u- k0 D2 m: x3 w! Y  b密碼檔案 (.htpasswd) 內寫上:
: O) _  l9 E% u* y/ D2 vuser1:password12 ~  b) f' w6 B! M. |
user2:password2) m3 U9 w+ l/ e8 \) h. h
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david1 F0 A; }; U( k  y, F* }! G6 l

- Y) f; A% z* b8 s2. 自設錯誤報告文件; J8 p) X( S8 T. L0 J: o* M
.htaccess 內寫上:) N# O# G( S# U6 ?+ S; B
ErrorDocument 404 /404.html6 ^$ A" l% s& _+ X
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:0 s5 d+ f/ f* z/ U* i! y5 W
ErrorDocument 404 "<html><body>找不到網頁</body></html>+ d. F: n% D" [8 H
ErrorDocument 500 /500.html
, X3 r- D1 H. Q" _# k8 r0 c! N, ]8 R' m7 ?+ Q$ n
3. 自設首頁檔案( g/ S4 d' V$ E( H6 B+ n6 e
.htaccess 內寫上:
- }4 n7 @3 Y! \: y: L0 ]8 F, cDirectoryIndex a.html5 u7 ]* v0 P7 Y
首頁檔案便是 a.html 了
' N7 Z7 _$ {( Y. k% U8 ]- L) T) l+ v3 |1 d4 d1 b. c! C
4. 禁止讀取檔案
" c! t9 {: G; l" {" n6 d.htaccess 內寫上:
! k+ W8 @4 l8 A( e<Files secret.html>- c7 e' M" u+ }. d8 J
order allow,deny" I0 t" v& F3 |: `; q. o: Y
deny from all
2 s% w3 H/ i1 Z; m$ ^! [# d* d</Files>
8 O* Q  R0 o: \$ sdeny from all 即所有人皆不能讀取 sercet.html
/ p7 b; Q- V; c7 g" A& \, |$ C# e1 N; u) Q" E5 W8 o% m% b  {
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch$ y- y3 H. x1 `( q1 ^# H% ]
.htaccess 內寫上:
: u1 M+ x( H( B6 u6 _<filesmatch "\.jpg">
6 N3 y% ~6 |) o3 Y# s5 horder allow,deny
( C6 F2 _2 Z8 N) R% edeny from all
* g) f: y1 R2 T$ E, X4 I</filesmatch>
, [6 {( J0 B1 d% s; i1 w即所有人皆不能讀取副檔名為 .jpg 的檔案- y/ S; S" _$ j' K: h" h! G) \
3 a# U+ O" M* u- @& j+ U4 @5 D4 o
.htaccess 內寫上:/ o) E8 c  P) l
<Files secret.html>4 t$ z! ?# X5 T) ?" N
order allow,deny8 I; P8 b" D& L
allow form all
3 x3 {' j  @1 d+ i! a/ Zdeny form 202.202: ]$ m  ?3 L: S; j
</Files>2 |( Z# Y6 R; g7 G* A
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
- s8 A% R3 w8 x, R: f
7 M$ `, ]: f) @  L7 `- e3 k: O; h  y.htaccess 內寫上:
% x6 q( b' R' r$ g/ X" a0 \<Limit GET>% M# \7 f; r" \, N, P
order deny,allow7 D0 c7 n% j; Q+ h6 e% j
deny from all0 W* q- R9 R. V" x. G' T/ M( q! E# L4 E
allow from 202.202 domain.com1 i3 q1 N# v% N; w6 n
</Limit>" E) |7 F) d( R4 b; {3 u. S& k5 N1 O
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容6 R' h0 e/ i' f

3 f8 y: }8 e7 s" A4 r4 d  j.htaccess 內寫上:
/ ], M0 a+ f  {7 w* @5 L- }' wAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
. C0 k  G9 a2 Z( Q7 l" f2 s/ I* C<files sercet.html>
0 U5 P$ ]5 D% L( g8 M! u, P3 ^require user peter
8 P# n$ f1 D+ a% f# l, b</files>( L& i1 U9 S' Y- l
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
" R! q& |5 B, `8 i
0 f4 e  e  Q3 l1 t5. 重新導向文件
( O2 y" O- L3 E.htaccess 內寫上:/ G% O/ j* U# u9 F" S
Redirect /old http://url/new
! I$ I6 P5 o* J$ ?當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:2 @" b6 k0 J2 y! w0 d+ C* n
Redirect permanent /old http://url/new: r9 o4 Q8 Y; o
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new
1 |, G5 t9 Y/ k% G0 E+ S# I2 V$ H1 K  v5 g
6. 防止列出目綠內的檔案6 G, Y+ B, ^' O* N9 ]
.htaccess 內寫上:0 d/ ^+ `+ X& }+ Q7 r: J
Option -Indexes
9 y5 t4 z2 \8 @+ i9 S這便不能列出檔案目錄了
' z$ l! o% S8 f: S& L" H# i8 g; F.htaccess 內寫上:
5 s0 K) i* s; mIndexIgnore *.zip *.txt
& d8 S( I  D$ F0 v0 q( G8 O這便不列出檔案目錄內的 .zip 與 .txt 檔了
! q9 l: ^+ A3 c% m
, v! g9 X5 B) R3 ?, G5 p, K# l& r註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: / n' w. R$ j# N" m, F, e4 m2 T

3 ^& I, A3 C- F1 F1 p0 H: f3 S# B# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
4 B/ \$ t( f$ `4 H) W8 B0 aAuthName 阿達的祕密基地 9 j* T5 ?, Y- m$ h" S: L8 s
# 編碼方式,目前只支援Basic一種而已。 5 C6 s  [3 ]6 H/ ?% Q1 V, d
AuthType Basic 3 v5 H  P0 `& w: z5 x
# 密碼檔的絕對路徑,可用htpasswd指令建立。 : ~0 P. t0 d2 h: W4 V9 M
AuthUserFile /home/.../filename
) G& _- E( r! Y2 c8 S" x# 若下面有指定 require group,則需要group檔的絕對路徑。 7 L% c4 L. j; [" z+ d
AuthGroupFile /home/.../filename ; w8 \- I; r4 `. F* a  B' v; ?

- M' ~2 l4 z, B( [8 l<Limit GET POST> $ l( l$ ~' q( y$ E
require user user1 user2 ...
) \* x# W4 w& j* j; {$ X1 zrequire group group1 group2 ... 2 p( p( C' r) b( k2 ^
</Limit>
- e4 `2 o1 n* f0 R' Y2 w
1 `7 o( B4 j; |: m! Z' d# e' t6 a$ I3 M' U' d
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: - f, k* X9 N2 x3 x; B4 T

( |% b7 Z1 Q1 ]& b, X# g4 t1 ygroup檔: ( [2 a7 ?! M6 c+ c  ]) p
group1:user1 user2 ... * b! K0 a% G, w
group2:user3 user4 ...
; v& T3 s! P$ D5 M$ O...
( ^0 }, B4 |& {/ S- \0 ~: F, {9 \
* R2 [7 P' L. ~# J% X( S# L: f/ jpasswd檔: 6 O5 ^" A1 Z  t9 c4 |; ?$ p' x
user1:password
! L9 U8 r! d0 A/ j, y8 [user2:password 9 z/ E& F! b/ `1 J& e
... : q5 B& H$ `5 j7 g( T5 U5 P3 s+ c

$ O& N* {: e* w密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 5 m" y0 c  ?& J8 |  P9 c4 R

1 T# S) W$ \: ^# B; f$ ?5 G另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
9 _. R* n) Y. w7 l& i
/ y: m9 D6 u' E0 |4 T) s9 {9 m( yOK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題