標題:
[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
[打印本頁]
作者:
segaa
時間:
2007-3-15 12:24 AM
標題:
[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
1 w7 R& `) r4 F. I7 _0 ~, c$ k u
& o& M7 W) H5 i: r
.htaccess
2 n/ {4 n4 L- i4 B- h& N
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
2 G% @ @0 F) p: G3 z$ m m7 P# ~
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
0 I/ X/ l1 W3 A
--------------------------------------------------------------------------------
' p5 h* I) x! f I" t7 r D
httpd.conf 的設定
8 ?# |" e& t) C+ }# f, l
加上或取消註解 (#) ]定改成 AllowOverride All
+ F7 e9 }( }- e# g" V5 m
然後儲存及重新啟動伺服器軟件
6 r' ~ T' R, Q& Q
--------------------------------------------------------------------------------
( k3 g( `$ `( G0 N4 d
.htaccess 的用法
5 L H Z+ J' o# g; _9 U
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
) }2 V- h: b' v6 y
用法:
. |/ {3 I: j" w# B; r
1. 密碼保護
0 F2 p' I; W* g& O
.htaccess 內寫上:
' [1 t) X: N" g+ U2 C8 z J
AuthName "testing"
: l6 K! I+ @* p
AuthType Basic
2 p) x4 L8 _2 K# z3 _
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
$ H8 R' ~* O+ [+ r) J4 d
require valid-user
|/ D/ E' s$ w& | G" h% _! O
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
- ]' w u+ L, R" J! N
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
5 ?4 C0 \ o2 {/ m
密碼檔案 (.htpasswd) 內寫上:
- t: {; |* a- C. q0 [% T" |2 c- z
user1:password1
. c4 |/ P( p% x- e
user2:password2
& B, h' A; W: i: ]. K; s3 w1 e
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
* G# M5 Y" Q" E& N
1 G: T4 h' W+ A! c) D/ N3 z' E
2. 自設錯誤報告文件
. o6 K3 q) J0 i8 R% O
.htaccess 內寫上:
% V, ] u! O" H
ErrorDocument 404 /404.html
" Y/ l: l! p* w- Z/ A/ r
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
+ H, x# _/ E C }! y
ErrorDocument 404 "<html><body>找不到網頁</body></html>
- {9 H4 ~+ H4 n
ErrorDocument 500 /500.html
( ` X1 j1 W( Q( Y' u0 |+ w
$ v" Y2 @' r/ Y O: |) @6 K
3. 自設首頁檔案
0 B& |, r2 C% h
.htaccess 內寫上:
/ B) z" J/ W, }+ y& U- X8 F8 Q5 i5 K
DirectoryIndex a.html
/ y. @5 T$ a) c2 [3 O& H
首頁檔案便是 a.html 了
! W( F! d5 _1 _. r' b
% B* i9 Z& T2 b+ v: ?) c$ E
4. 禁止讀取檔案
6 |( ]$ ^/ G1 L5 v8 m3 A
.htaccess 內寫上:
: u( d* J8 y/ O* W y1 K
<Files secret.html>
; U q% j+ C3 ~$ P8 A+ l
order allow,deny
% d- X! w' n. K" ^; a
deny from all
; V7 V2 ]! o8 c* O+ y# N, |
</Files>
- j9 K# Z0 @4 X! q) }
deny from all 即所有人皆不能讀取 sercet.html
2 z5 y" y4 L/ ~+ f# v. U
9 h/ b2 e9 o! W4 C1 i9 Z
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
5 M: _! B5 \; w/ H. v
.htaccess 內寫上:
7 _; ?- F/ x: t* ]7 j2 D- _
<filesmatch "\.jpg">
3 a: o8 ]4 b+ j5 h e% S. D- E! M5 B
order allow,deny
- a8 f4 d. x# H! J3 C* c, J
deny from all
( i7 F) T8 a+ l v, J- k$ d
</filesmatch>
* A r6 j0 P7 G; W) h- y
即所有人皆不能讀取副檔名為 .jpg 的檔案
! j9 @; j! Z6 w% x# i
8 a- s0 m% A# C9 j) ]: n# M2 n
.htaccess 內寫上:
& X( Y V& a2 J3 l
<Files secret.html>
% T" ?0 t) U/ `# o8 N# [
order allow,deny
) K) I$ t9 s* J# D1 @
allow form all
: J' X0 P% h: a# L; y
deny form 202.202
3 \. |1 J5 _ c1 p! f
</Files>
' l! b( O1 {" F( M# b2 l
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
, f, Z+ ?; n4 m' G7 E& {
7 s- E) R+ _' B
.htaccess 內寫上:
! S+ b' b% b2 C Z
<Limit GET>
! A* F/ {6 e. D
order deny,allow
- P" [$ J' d6 G
deny from all
1 c, f1 i( ?! }' x* D* ]) |
allow from 202.202 domain.com
& t8 a& l/ n% b
</Limit>
2 E. ^2 U) a' R% z
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
1 B) A5 s0 m. G$ N
6 }0 H3 e3 r; M
.htaccess 內寫上:
# w' `3 [! |, O3 i$ Y7 q3 J! q
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
" |" ^- l1 \3 e: d( A& _' B
<files sercet.html>
% k$ ~+ L2 g& z- g$ v
require user peter
& \, H5 E' S/ N; K/ i! l7 D
</files>
9 ^; f8 ^' T) i
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
+ b9 ~6 f( ]- z; C: y
3 y- t b2 L7 U) N7 J
5. 重新導向文件
" Y4 N) ]3 v$ f- g
.htaccess 內寫上:
9 g2 j7 z& x u: V1 q
Redirect /old
http://url/new
+ B) j7 q7 j) F( R8 B3 x
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new
,或在 .htaccess 內寫上:
* b, z6 r$ r# Y2 O$ O9 c, n3 N
Redirect permanent /old
http://url/new
. l+ }8 B/ Z9 d: E, F2 O
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
: K2 U+ a$ U3 ]
+ M! m) G4 r* ~$ s9 d% x2 E* K0 x
6. 防止列出目綠內的檔案
; i/ n$ d# R6 E
.htaccess 內寫上:
8 H& L/ y7 g6 S5 f0 t6 z- Z
Option -Indexes
& e( J& _( t/ k5 d, G
這便不能列出檔案目錄了
1 s$ A* L2 N+ z% O( d
.htaccess 內寫上:
! c5 ?+ Q; p; Y* G+ B
IndexIgnore *.zip *.txt
5 z/ T! N: D5 e1 P
這便不列出檔案目錄內的 .zip 與 .txt 檔了
3 L* Y; Z w3 z' ^( n4 p
z' {* {( y R; W k
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )
作者:
segaa
時間:
2007-3-15 12:25 AM
首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
! U& j6 b5 O: n/ d
/ X8 E1 C/ R4 a& \3 j; p- r. V6 a
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
' _( }8 O) M. K
AuthName 阿達的祕密基地
6 r( W: o' I( [8 z* m
# 編碼方式,目前只支援Basic一種而已。
; m& O* p, e; }7 o& e4 ^. |* J9 t
AuthType Basic
8 M8 t$ Y* S: }1 t
# 密碼檔的絕對路徑,可用htpasswd指令建立。
7 t7 N2 Z: B: P6 b
AuthUserFile /home/.../filename
8 o$ x5 j4 H6 R) o3 w6 u; T
# 若下面有指定 require group,則需要group檔的絕對路徑。
, a! ?# D4 m1 n
AuthGroupFile /home/.../filename
0 @* G' p/ n7 |2 ]
7 \7 K: s4 n1 l5 [% j0 f1 ]
<Limit GET POST>
& x; E5 d! T7 m: D; o, v# c' G0 J9 X
require user user1 user2 ...
4 B8 ^3 E. E$ }; a4 o6 \) g; q
require group group1 group2 ...
" a, y/ S+ h- Y! H
</Limit>
W4 d4 t! D. I) w1 J
$ E* e, }4 [! \# A4 B& Z5 w
# |- a4 _ W5 V
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:
( {) r: }8 U. [+ I7 E
+ t- P4 d+ R, H. P6 P4 N8 A
group檔:
) K3 N( q7 G1 s3 R9 h2 e; @6 r
group1:user1 user2 ...
, p8 w: F" b3 n0 O
group2:user3 user4 ...
) m. G; ^$ f# B' ^9 `4 I. Q
...
: i& m9 H; E: n% |" t) ?0 b$ \7 i; c
6 f& M6 J) p" E2 D* |: `
passwd檔:
& l- V3 z8 U- `4 y! F
user1:password
. _/ Z& V F1 Y3 @
user2:password
- Y+ Q+ Z" P& t5 z
...
- `9 y# m" E, m2 G- ?! f9 `9 y
7 u# i1 J! J' F; c
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。
6 K T7 e- c5 B( v: o
( G; q! `& ]) q
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
- K# W+ `& R9 v
9 ?1 D9 }( L3 a6 ~2 Y `
OK!!就這麼簡單,現在你可以試試看成功了沒...
歡迎光臨 幸運草之戀 (http://discuz.segaa.net/)
Powered by Discuz! 6.0.0