[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
/ }, w! C7 ~/ Q/ g: Q9 X7 ^2 ~: W9 D' P4 I3 n+ v. }9 O7 E+ Y
.htaccess
7 s1 n4 m# R0 u. z8 O1 w4 m
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
$ k* m( [9 \/ u! T- n( m) L.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
6 y9 b, a! o8 M. r4 f% x
--------------------------------------------------------------------------------
4 Y p. \9 z& W, T$ I6 }
httpd.conf 的設定
0 W9 G) @ c* n+ n* D1 _加上或取消註解 (#) ]定改成 AllowOverride All
5 y$ v2 g5 ], Y然後儲存及重新啟動伺服器軟件
) P) y" K3 j) Z2 Y--------------------------------------------------------------------------------
( u% V# R1 m3 R! E `6 I3 F1 c
.htaccess 的用法
. K: h( ]: j& c
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
1 z# \8 P; m" x- u- ]
用法:
+ \+ G( h+ i4 j( v3 B1. 密碼保護
& H4 l% Q) @ y: I
.htaccess 內寫上:
" m; A( Q4 I/ f5 `% U6 ?3 V1 h2 n: |AuthName "testing"
& R# B/ N! k" {6 O
AuthType Basic
2 P1 G9 @! s! X! F3 |" d
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
3 D" {3 q/ B5 |2 T/ `+ Q
require valid-user
! C+ e5 _- ^& l
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
. r0 K$ Y6 G: b7 u6 hAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
- U. R9 x" O* }( v) J& d密碼檔案 (.htpasswd) 內寫上:
! L4 b* v. {! ?% h- L4 h
user1:password1
) K) }# P" ?2 K _, \6 Luser2:password2
" }8 A( f& U' r( n! A! S; m, W4 M4 p
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
7 {; m( o8 O9 H
" Y( S C& B6 E$ M2. 自設錯誤報告文件
; h. `& f4 t% D: T. @/ d+ T.htaccess 內寫上:
+ r/ Z$ N# F U0 `4 R; C
ErrorDocument 404 /404.html
* \$ |2 }5 r; C G1 y8 ?
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
; k% g* ]! d R0 {2 ? }( A/ mErrorDocument 404 "<html><body>找不到網頁</body></html>
# P3 K/ @7 n' H1 P
ErrorDocument 500 /500.html
3 y1 P/ ?+ G0 ]9 K: y+ @2 N6 a$ O; O z0 j
3. 自設首頁檔案
4 L0 ^" G1 x3 n( h0 w" _
.htaccess 內寫上:
1 J& L5 L3 y( P/ FDirectoryIndex a.html
1 O+ P+ m9 r6 f6 ^' E" {
首頁檔案便是 a.html 了
' P9 |' d+ r) X" b) j; O' B
/ u: R; u4 ? z2 ]' E4. 禁止讀取檔案
2 d9 i, J" ?+ ?- n.htaccess 內寫上:
8 G- \+ ^- [1 A/ w+ `; B" M
<Files secret.html>
" n0 ?' i/ I3 t5 e1 ~. x/ ^order allow,deny
" r% L/ ?, R" I3 I9 q5 c6 J- ~deny from all
c9 t$ x! K+ r7 D" e- ?
</Files>
& g" K5 p! X7 R, \3 T8 x" i3 pdeny from all 即所有人皆不能讀取 sercet.html
/ F! ^' g ^- {5 t
+ ^7 S6 w/ N: u. |! e( `1 }
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
2 r$ f( P- ?' K8 U
.htaccess 內寫上:
/ v4 n. I' P$ X
<filesmatch "\.jpg">
+ D% s" B0 ^# A6 Y5 V0 L M* [order allow,deny
$ T, }& ?8 x+ m+ R( h: m
deny from all
( Y" i$ t% ?& r</filesmatch>
# k( E; f0 u) ~9 \4 X即所有人皆不能讀取副檔名為 .jpg 的檔案
* L) F; G1 g: s% C y% z
8 P; v/ B. Q8 G# B3 ]1 K
.htaccess 內寫上:
: J: z: c+ Z) ]; H" v) _<Files secret.html>
: n1 B* e! T: g& V* H
order allow,deny
1 \0 d( S' }1 t2 Vallow form all
* T, K' K- i9 H( d/ Z9 f4 Bdeny form 202.202
, j! o6 f* g: {. ]: o
</Files>
- ~7 r0 @7 A* R7 e9 B9 z即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
. u* ~! S7 x$ E! V7 a" G% X
3 }* b# _; l" W S3 C.htaccess 內寫上:
! ?3 ?4 ^ C4 K$ e1 X. r5 A<Limit GET>
/ h% `) ~' W& E
order deny,allow
0 T* y$ z- _9 B. l% ^6 Y$ n* K; \deny from all
8 v4 U( ^! _ H* y$ t9 u, Tallow from 202.202 domain.com
) G# A$ o' {" |, E& Y% Z" O
</Limit>
% b" b$ X6 d& }, z+ V" M8 x
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
+ j) J) x* X& E' U# j- g
2 T$ _& o( K5 {% Z' y% p* B! D.htaccess 內寫上:
2 h' |& m# |: a% r
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
3 d' ]& i: C, W! Q3 h) Z8 F" v. d
<files sercet.html>
/ J v# q# Q/ t0 M
require user peter
! x: p% O f9 r3 v1 i3 d9 y
</files>
3 ]' C- E n% _5 T即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
" r" F$ D. j: e E4 R. P. o# f0 Q6 T' J& s9 |
5. 重新導向文件
8 B" x( ]' O& ~9 s+ t! |
.htaccess 內寫上:
2 ~' E' r3 w5 M' O" @% }
Redirect /old
http://url/new0 y* m& O& _ ~+ N! T9 t% _
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
3 ^4 v" n$ m" L. b& cRedirect permanent /old
http://url/new; _# _; _0 Y& K1 T
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new8 R: e3 ?! b6 ^6 V8 W
7 D! P* m0 A0 I9 e$ A8 q: H6. 防止列出目綠內的檔案
7 p2 K. A2 c# T! H& ?.htaccess 內寫上:
+ a1 x6 j5 u: W# Y9 N3 rOption -Indexes
$ w; {6 o8 P' }; x
這便不能列出檔案目錄了
0 u% Q8 e: G# |8 g7 q: H9 l' _.htaccess 內寫上:
7 f+ {+ t- X9 Y. B* [; m5 O) u
IndexIgnore *.zip *.txt
+ q" {- N' ]5 f這便不列出檔案目錄內的 .zip 與 .txt 檔了
/ u6 J! K; ?# i% L
+ H& @ \: ^* r) J註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )