[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
+ m( s2 T+ u4 u: p, I' z
# K2 [. |2 F) u+ k; G# w.htaccess
% c* f2 e8 _+ N/ [* e+ ~2 @ G2 _
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
/ V% \% j% A2 d5 B$ d$ S.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
2 c# |0 x/ F; U, K3 C; k
--------------------------------------------------------------------------------
9 D" T) S. v, g: B0 r; \
httpd.conf 的設定
* N1 y. ?0 v' ], q5 _
加上或取消註解 (#) ]定改成 AllowOverride All
2 D) J! v: X. S* w, K1 K" j然後儲存及重新啟動伺服器軟件
2 \+ l- [% D8 F2 P+ Q+ ~; T% ~! O
--------------------------------------------------------------------------------
4 S f9 U" ^" D% h
.htaccess 的用法
; O; \) C! z9 b" ?
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
" A8 P5 _8 V+ @3 U1 {
用法:
% i. n1 N; R7 Y L" Y- L
1. 密碼保護
$ l$ P9 h; R1 R3 c
.htaccess 內寫上:
) D2 ?, f, D& ^# r# Y1 N7 r
AuthName "testing"
# A4 c) q& f; r/ {8 Z' W4 H1 R8 fAuthType Basic
' V0 D# _/ ?/ ]0 QAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
6 J. t, z8 n7 U& K' }5 Frequire valid-user
, F8 W/ C. @( z4 D# v9 z
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
Z- M( ?+ [2 a; b# {4 d ], tAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
1 L/ S- @) Z" O. k7 @0 O+ Z密碼檔案 (.htpasswd) 內寫上:
' B l' e8 s0 e: K6 zuser1:password1
+ z$ | ^+ l, P$ ^
user2:password2
5 z9 Y$ k3 |+ c6 ]! D# A% v3 ?
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
+ [6 R5 M3 x( p s' ~
9 p5 K( z P4 M1 a2. 自設錯誤報告文件
* ~* Z1 `: E- w* H# K.htaccess 內寫上:
9 h4 R8 {( D. W: p% ]8 |
ErrorDocument 404 /404.html
V! p+ J; a0 t( O* S6 Q0 p
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
" v8 K$ G) {) C6 p5 xErrorDocument 404 "<html><body>找不到網頁</body></html>
* S( Y4 [9 @7 c1 T
ErrorDocument 500 /500.html
[/ q- J: I3 P8 `/ j5 l' q$ k( j( C2 L6 Y" c& b6 y. t0 c
3. 自設首頁檔案
9 c7 U2 _4 C) ^, v0 b* z, N/ U
.htaccess 內寫上:
$ h: c7 j2 M8 e% |
DirectoryIndex a.html
+ A* a4 h# g0 ^
首頁檔案便是 a.html 了
- `# m% E/ s8 A1 g' Q" l6 \3 A( a3 Z
& |1 R4 T* G5 l8 ~# I- p" {2 W$ w4. 禁止讀取檔案
; _% y; U+ s) ] P$ N.htaccess 內寫上:
6 r$ u9 O4 L! G9 |
<Files secret.html>
& F( i% p+ w9 Z
order allow,deny
3 i$ u, T& T+ O* m9 Z; a/ r
deny from all
V w9 P( T! ^, {8 ?! {
</Files>
5 [( R F! E+ W4 C' Pdeny from all 即所有人皆不能讀取 sercet.html
/ M) ~; _9 {' w% F
$ l7 {2 M9 V0 Z& i
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
8 G9 S& @3 _9 U' m
.htaccess 內寫上:
% b( Y- S/ S9 u' R0 T/ L<filesmatch "\.jpg">
0 F% k8 i5 p' P/ L6 \! Horder allow,deny
3 u. \7 x; ]+ c o1 [; E" }7 C1 V3 ^8 F
deny from all
0 s5 _- A( D6 q) {5 i" ]% v
</filesmatch>
2 F8 J$ \* Q# y( Y! q+ j, G, M即所有人皆不能讀取副檔名為 .jpg 的檔案
. a9 M5 i5 H. v' E# v* a8 `2 @
) V$ M- Q/ B9 V1 N% Y.htaccess 內寫上:
; B- X: m ^; z
<Files secret.html>
7 C' x. o* Y8 w: m2 D/ H& L
order allow,deny
$ }9 m! o. N+ l! _& X( q0 e, Rallow form all
3 U8 ^/ T" L/ B" S# Ydeny form 202.202
8 u9 a7 N# u( y</Files>
; L/ b* E9 d* c+ V' u' Z, O
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
' p1 c* v& f0 g- A: S" ?
& e$ w: ^* ^: Y) e# W.htaccess 內寫上:
& N; A" L+ y; k2 [' x
<Limit GET>
X9 z& s G# f+ D1 C6 Qorder deny,allow
% |% B) N! a* j' h5 z3 u( c2 {
deny from all
9 L3 g+ Y; E4 x) R [7 Nallow from 202.202 domain.com
( Z2 d, W, J; K
</Limit>
& S$ u5 t. X9 t
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
* Y; }* @* g; W
& |9 { ]7 n9 s! J% K.htaccess 內寫上:
5 n2 i9 k, B- P* J" s
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
U* G: N0 r# R7 X8 s<files sercet.html>
+ Y8 N7 d* M! I& n2 V6 Irequire user peter
) d& P( o8 f$ U& A& j) ^
</files>
5 G3 `4 Z0 ` S3 M& Q即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
& K3 M) l( h+ [$ }& O% W! F0 {5 z$ ]) C3 k) D' Z' k& a
5. 重新導向文件
; `5 d, Y! Y" F$ ~
.htaccess 內寫上:
) o: p; O! c2 g) _Redirect /old
http://url/new8 J7 T8 b3 [7 R
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
+ Y* X6 h; \' b2 `
Redirect permanent /old
http://url/new
) W2 u9 Z) x+ O6 [4 Y( B- l# m# e當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
5 m4 `0 d0 Y4 d6 ?1 F1 i7 v+ i6 g9 q# q% m) C5 C
6. 防止列出目綠內的檔案
% k6 O& H, L6 `
.htaccess 內寫上:
: _" T! O4 y4 G$ `, R) o* KOption -Indexes
$ j) X% B$ m% d# }3 d" z9 m) l/ e這便不能列出檔案目錄了
% b( j- e! S" D5 t3 U. [.htaccess 內寫上:
) A7 L7 A6 v9 y t
IndexIgnore *.zip *.txt
# W# m* R( x* ~5 j3 r這便不列出檔案目錄內的 .zip 與 .txt 檔了
h3 V) C9 E6 L, v- M7 L7 x# {. E. y" c" J$ C+ v
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )