[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
- @; p3 B* o$ T2 G" i# a, s8 h7 X) N; \# Y3 K3 \
.htaccess
) _+ @1 H6 L) s0 @" t7 _.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
; Z" Z6 S( z* Q# c: Y# o+ O Y
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
8 J0 ~3 J- i: Z' i% G
--------------------------------------------------------------------------------
! ~0 Q* I+ m2 w; f" Whttpd.conf 的設定
) |- k$ ~) \+ ~ B4 E: `2 z# f, V; k
加上或取消註解 (#) ]定改成 AllowOverride All
7 A. w& J4 z8 _! |+ t8 F然後儲存及重新啟動伺服器軟件
* |* f8 D& Y. |$ a% r--------------------------------------------------------------------------------
' H3 C3 C# k% a) X5 t J
.htaccess 的用法
7 Q9 {' Q% v2 |% }, F0 w2 _$ R
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
K" K( d i& N. o4 ~1 j7 O# E% p用法:
% n! l3 ]7 o' o8 P1. 密碼保護
$ S. k' t+ X/ D. F- P.htaccess 內寫上:
$ f( Q) ]7 o. WAuthName "testing"
& V- d/ K3 j# h+ e* @/ S+ h
AuthType Basic
~9 _3 {7 b I. O( e
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
+ M* {2 t0 S3 |, F ?require valid-user
. Z* p1 U! c5 c' mAuthName 是當你進入密碼保護時,瀏覽器出現的說明
8 e/ B# V& {' y8 ~* z" B$ T! L3 ?
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
q' Z! S- b% u5 Q密碼檔案 (.htpasswd) 內寫上:
3 g' I2 P+ J+ a4 Zuser1:password1
' \% s5 ^+ g1 o1 c4 d5 w7 ^: _user2:password2
$ D9 }7 _& j" R. m6 F
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
4 c" @1 a$ C F! G) S
7 r1 I( n( R! A5 Z4 W- a2. 自設錯誤報告文件
4 u. I. E, K: v F.htaccess 內寫上:
# O! ] @9 g1 d: }, c
ErrorDocument 404 /404.html
, {7 \: J7 \7 e4 J H) q% d如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
`5 |6 f- j! m+ @
ErrorDocument 404 "<html><body>找不到網頁</body></html>
* z1 C! f* u3 f, E- y/ aErrorDocument 500 /500.html
/ L( ]& {" ?, L
- m- |, O' b( B7 d/ Q3. 自設首頁檔案
; ^: n4 @% G% G2 m$ P& s: [
.htaccess 內寫上:
; |" r" E& A- q$ x4 p# H/ K3 L' xDirectoryIndex a.html
3 s* I+ L! e% }# L首頁檔案便是 a.html 了
8 h2 p0 `$ b8 i5 ^: `3 Y0 L5 D* |/ @8 \
4. 禁止讀取檔案
! T. S* h# Q) \/ T6 d.htaccess 內寫上:
0 N0 V0 T" w* |- R4 `
<Files secret.html>
8 n. i9 X8 w+ C7 n f
order allow,deny
/ E- p; J2 t/ A; |- S9 n* tdeny from all
Y1 ^( d0 _: Z+ \' x9 m0 x
</Files>
- P' G$ ~1 f! F, ]6 M9 P$ Y; ]% g5 @
deny from all 即所有人皆不能讀取 sercet.html
' C x+ I9 `6 j: b, M* x. }
$ p) k0 t0 I# ` ]1 V而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
" `' y; S: V5 Z! e( M1 X8 W.htaccess 內寫上:
3 q! D0 s! z$ ], h- \* C3 A
<filesmatch "\.jpg">
- N* |' k5 c& E. R; u
order allow,deny
5 i7 Q4 u9 s0 P% e
deny from all
! v5 U5 P& `7 Q, W2 i; H</filesmatch>
' K5 N" R3 ]& g+ |' {1 i; d
即所有人皆不能讀取副檔名為 .jpg 的檔案
5 M5 O) M1 q0 i _. I
$ r9 z% S+ w5 D.htaccess 內寫上:
' h( w" S4 y! R& p% |) ?" f
<Files secret.html>
, r1 Y, H" _! b% r iorder allow,deny
- R6 r+ N$ Y5 ]8 \6 ~, F
allow form all
3 a, _' O$ f7 n I2 J( I7 I
deny form 202.202
) p; i) q; ~. M# X+ W+ {</Files>
# H4 h: o1 t# x0 v, @
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
2 e' H4 W; ^2 ^2 Z! `/ }, T. d8 v! J. g1 @ e
.htaccess 內寫上:
+ V( N. ^4 Z S. S% C
<Limit GET>
7 ~. s- E t! k+ m8 xorder deny,allow
( o% j. y. o2 x5 [6 ~+ _3 }
deny from all
+ O, K/ A; p& H( N$ g6 i2 ]! t0 W
allow from 202.202 domain.com
2 J5 t3 c. I* q4 g2 f
</Limit>
& ^% x6 c t7 p7 L$ E( h即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
& I+ \$ L! x, X5 M% @1 }1 B. W
& P5 O0 f) y$ x& G
.htaccess 內寫上:
5 Y9 J1 K4 \7 o8 b* S
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
" r) R, L% q5 U* I% o<files sercet.html>
2 T/ F' r* @5 h% m
require user peter
. ], T, U/ ?+ M: }! `
</files>
) U+ v5 {) O- y7 l- n即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
$ M7 E4 n7 a. ~9 m8 Y7 }7 H; j
- A% G2 c# @1 M7 s" ~0 n @+ q
5. 重新導向文件
- m4 U. ^" e- S
.htaccess 內寫上:
# g" }2 \9 v |1 I
Redirect /old
http://url/new+ S' l5 p& O8 ?! K
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
' k: X+ ]4 Q' V- HRedirect permanent /old
http://url/new8 P* K# A6 Q& i, ~; p. C" G
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
/ a" e \6 S9 f1 C/ U* K$ o& ^) Q/ N v: t# A4 J
6. 防止列出目綠內的檔案
% @& y4 l/ Y( L$ E' D0 f( u
.htaccess 內寫上:
3 e7 K0 X; F8 V3 J1 {! z
Option -Indexes
1 F7 J9 j6 v1 ^+ \3 I5 a# ?8 n8 f+ e這便不能列出檔案目錄了
5 |# y3 p& _' r4 R% n) y: d.htaccess 內寫上:
) ~6 n3 p4 i: H7 i" z z: O
IndexIgnore *.zip *.txt
$ S4 k* _, |$ V2 |這便不列出檔案目錄內的 .zip 與 .txt 檔了
0 s, h# ?: ]+ Z" {0 _
4 ~1 b% X b5 g% F- y2 Q* W
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )