[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 All
3 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:password2
4 ?; ]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.html
7 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 的 filesmatch
5 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,allow
7 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> )