[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
( K% F# E* V5 T7 u* N# y% E( r y2 s
.htaccess
6 G, N8 b+ A% }: ].htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
" K4 j* W! P! F& c# P1 O" R.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
% W, ]( l* q% ^* O+ w9 F--------------------------------------------------------------------------------
( r3 ]. f1 S5 ? S6 [! x# U
httpd.conf 的設定
* h, |8 L7 E4 {- f
加上或取消註解 (#) ]定改成 AllowOverride All
q9 @5 d' E3 J+ h然後儲存及重新啟動伺服器軟件
, E3 @: V3 X+ l- \# K
--------------------------------------------------------------------------------
: y5 O, x. R* _/ F0 A+ X; o.htaccess 的用法
! J0 b8 q1 J+ G& G先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
# \4 V4 N: d8 s0 K( H用法:
! F6 F" [/ ]7 b$ [/ k U0 x' P* [
1. 密碼保護
( o1 O ^( @6 a* ~5 ?7 t.htaccess 內寫上:
, F) d/ Z2 d' k3 M1 Y) w, kAuthName "testing"
3 r9 ?; V& ]( `AuthType Basic
- c: L* G+ e; s; a/ j3 J; }
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
8 J% w" K2 l/ K {7 ?require valid-user
; p8 k4 z* B6 p
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
+ Y6 N; s! a' u8 d' NAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
7 b0 n0 z. K) j( |: k6 S
密碼檔案 (.htpasswd) 內寫上:
5 y6 b8 j6 C/ ^* d0 D7 l0 e2 k' U
user1:password1
& g" n+ e: W+ c1 h# j
user2:password2
7 ^9 Q, S0 W1 X8 W1 K: ?
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
% @5 p) z9 I/ b6 z9 R1 c0 W) A% @+ D) r. U
2. 自設錯誤報告文件
4 W8 g" |: Y$ N' z) t
.htaccess 內寫上:
' J6 f' _" t: L8 f7 X1 aErrorDocument 404 /404.html
& u0 G: O# L' [4 m" @( S
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
" e' n0 K8 @) @4 ]4 ^8 kErrorDocument 404 "<html><body>找不到網頁</body></html>
. n" X$ W" g& p4 V7 Y8 J% d
ErrorDocument 500 /500.html
d+ G2 o/ T, d& H3 d, T
+ A) E& ^1 g8 d6 @3. 自設首頁檔案
" q# L8 k+ H: W8 \- G/ c! B8 _/ E.htaccess 內寫上:
& s; p$ q7 y$ L) y# _
DirectoryIndex a.html
0 {* \1 f, X! k
首頁檔案便是 a.html 了
+ {4 o: @ R$ t `$ P4 \. M( e1 V0 j9 k7 O3 E' \* P# |
4. 禁止讀取檔案
1 D+ P# S) z. p' {1 {9 Y$ l4 y8 L% R
.htaccess 內寫上:
/ q4 L/ R: `2 d/ ^! f- i
<Files secret.html>
$ D5 T3 b4 B3 {9 [' C& _order allow,deny
/ n4 y+ Z% @) g" l6 S8 odeny from all
) _$ z' _1 U" d6 r q& F: R; n
</Files>
7 s: X7 Z: Z ] {; b' C
deny from all 即所有人皆不能讀取 sercet.html
0 _: j7 A: v x$ ^. r
. ]. g+ Z) w# g3 d1 Z
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
B5 w5 j. C1 D0 F0 _$ D' t8 W6 v
.htaccess 內寫上:
. V; F c8 n0 d5 W y8 d, \
<filesmatch "\.jpg">
+ E. I% G5 c) d- I& U9 J8 f! Aorder allow,deny
% Y8 Q1 N7 e* p: h+ t; ldeny from all
+ z$ d& e4 j+ o</filesmatch>
0 Q$ G. k; b9 T+ i6 T, R即所有人皆不能讀取副檔名為 .jpg 的檔案
. Q, K6 H- a/ f+ Q! Q
+ w9 E) i& h' s) a$ L- [.htaccess 內寫上:
0 g" m0 e( Z% A/ f<Files secret.html>
* r; p( |+ b0 t. Z _order allow,deny
+ |- [2 \! }2 [5 Z& Kallow form all
3 M% H5 A% ~- @; w; Qdeny form 202.202
+ B- L: u7 ?# _" A5 L$ r( d( s' t
</Files>
9 y: ~7 d$ j+ M即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
! ?" @" g7 F+ u5 b4 l% G6 S8 |. M
.htaccess 內寫上:
" r# S1 u. G) \9 b% u" @% n<Limit GET>
; m* d @' x& n, Y/ worder deny,allow
# o/ _* Q7 K& P* E
deny from all
1 T. h% J# f/ F. v: C6 Sallow from 202.202 domain.com
* }! j6 V i# k</Limit>
4 ~, s% F& o; V; z% Z
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
7 G k% [! M; ?3 M) |
# J0 F" g( j$ ?! m.htaccess 內寫上:
' p, |) e. _0 N
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
# c. G6 g+ _0 }4 B
<files sercet.html>
* g* @2 x& ^; C8 j3 ~( D$ x
require user peter
# `, v( ?2 }9 I9 w% x. F A</files>
: V$ T! ~; C; B即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
5 E( G8 ]7 k+ Z- r B9 \$ t) g" {3 G2 b4 O
5. 重新導向文件
% _" u+ D9 j# c! I# Q
.htaccess 內寫上:
- ~0 ~2 P( L: G3 bRedirect /old
http://url/new5 ?2 k* |( g$ P0 e! _# Y" {5 E3 _% W2 ~/ P
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
& V) V2 |! V5 M* z2 m7 {2 W$ W
Redirect permanent /old
http://url/new
6 Q: a( }8 I0 c# q當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
- _6 s. b, ]5 Q9 u- a; j* T5 U/ y) S# x
6. 防止列出目綠內的檔案
& l S+ I5 M2 Y) \! h.htaccess 內寫上:
" M. l) G! g5 vOption -Indexes
; a' Y/ s+ {) X6 w' G, [8 j. H這便不能列出檔案目錄了
! k9 i- Z, n( {6 i' \2 l.htaccess 內寫上:
, F7 q+ W1 K$ z4 L% O& nIndexIgnore *.zip *.txt
1 ~$ F* a# X2 z
這便不列出檔案目錄內的 .zip 與 .txt 檔了
8 L. ^, d# v5 ?$ Q# t: f8 S% X) B& n! H- L4 q
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )