[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
0 |/ j: W5 \+ S( e+ {! \: p
" a* K: ^8 u7 H7 v8 R.htaccess
/ d2 Q# L* {+ z6 _) _7 K.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
) V( i, q. d; ~8 h, c. T/ g9 w.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
8 h5 b+ g M8 a. t5 \--------------------------------------------------------------------------------
* D* V+ ~# a; X% _httpd.conf 的設定
4 N) n/ m1 R! ^7 @! T加上或取消註解 (#) ]定改成 AllowOverride All
# `* X" b8 o0 k( s% b; }1 L/ L然後儲存及重新啟動伺服器軟件
7 r2 f& t* P/ M% b) e: Y--------------------------------------------------------------------------------
, ?9 z# x* I. y/ K.htaccess 的用法
2 y9 D5 U/ g4 K" w
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
7 @4 Y+ S1 P. T+ X7 }2 L
用法:
( d: j9 j0 q" R4 C$ b
1. 密碼保護
: C5 C, i9 f0 d9 c1 j4 l c. L, P; e.htaccess 內寫上:
' j* {$ {8 `8 {& R( E( \! _
AuthName "testing"
) o* N0 [$ v5 C; G9 l9 B% d* h2 J; mAuthType Basic
6 i, ^1 I/ Z9 O' s6 N8 o5 l/ IAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
& H ?% v* E# _+ d$ o& ]
require valid-user
1 @; L: n6 q ?* r8 X4 a
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
/ u( r1 M2 }2 f6 P, |% E' N# { ^6 HAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
* V1 d2 u- k0 D2 m: x3 w! Y b密碼檔案 (.htpasswd) 內寫上:
: O) _ l9 E% u* y/ D2 vuser1:password1
2 ~ b) f' w6 B! M. |
user2:password2
) m3 U9 w+ l/ e8 \) h. h
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
1 F0 A; }; U( k y, F* }! G6 l
- Y) f; A% z* b8 s2. 自設錯誤報告文件
; J8 p) X( S8 T. L0 J: o* M
.htaccess 內寫上:
) N# O# G( S# U6 ?+ S; B
ErrorDocument 404 /404.html
6 ^$ A" l% s& _+ X
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
0 s5 d+ f/ f* z/ U* i! y5 W
ErrorDocument 404 "<html><body>找不到網頁</body></html>
+ d. F: n% D" [8 H
ErrorDocument 500 /500.html
, X3 r- D1 H. Q" _# k8 r0 c! N, ]8 R' m7 ?+ Q$ n
3. 自設首頁檔案
( g/ S4 d' V$ E( H6 B+ n6 e
.htaccess 內寫上:
- }4 n7 @3 Y! \: y: L0 ]8 F, cDirectoryIndex a.html
5 u7 ]* v0 P7 Y
首頁檔案便是 a.html 了
' N7 Z7 _$ {( Y. k% U8 ]- L) T) l+ v3 |1 d4 d1 b. c! C
4. 禁止讀取檔案
" c! t9 {: G; l" {" n6 d.htaccess 內寫上:
! k+ W8 @4 l8 A( e<Files secret.html>
- c7 e' M" u+ }. d8 J
order allow,deny
" I0 t" v& F3 |: `; q. o: Y
deny from all
2 s% w3 H/ i1 Z; m$ ^! [# d* d</Files>
8 O* Q R0 o: \$ sdeny from all 即所有人皆不能讀取 sercet.html
/ p7 b; Q- V; c7 g" A& \, |$ C# e1 N; u) Q" E5 W8 o% m% b {
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
$ y- y3 H. x1 `( q1 ^# H% ]
.htaccess 內寫上:
: u1 M+ x( H( B6 u6 _<filesmatch "\.jpg">
6 N3 y% ~6 |) o3 Y# s5 horder allow,deny
( C6 F2 _2 Z8 N) R% edeny from all
* g) f: y1 R2 T$ E, X4 I</filesmatch>
, [6 {( J0 B1 d% s; i1 w即所有人皆不能讀取副檔名為 .jpg 的檔案
- y/ S; S" _$ j' K: h" h! G) \
3 a# U+ O" M* u- @& j+ U4 @5 D4 o
.htaccess 內寫上:
/ o) E8 c P) l
<Files secret.html>
4 t$ z! ?# X5 T) ?" N
order allow,deny
8 I; P8 b" D& L
allow form all
3 x3 {' j @1 d+ i! a/ Zdeny form 202.202
: ]$ m ?3 L: S; j
</Files>
2 |( Z# Y6 R; g7 G* A
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
- s8 A% R3 w8 x, R: f
7 M$ `, ]: f) @ L7 `- e3 k: O; h y.htaccess 內寫上:
% x6 q( b' R' r$ g/ X" a0 \<Limit GET>
% M# \7 f; r" \, N, P
order deny,allow
7 D0 c7 n% j; Q+ h6 e% j
deny from all
0 W* q- R9 R. V" x. G' T/ M( q! E# L4 E
allow from 202.202 domain.com
1 i3 q1 N# v% N; w6 n
</Limit>
" E) |7 F) d( R4 b; {3 u. S& k5 N1 O
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
6 R' h0 e/ i' f
3 f8 y: }8 e7 s" A4 r4 d j.htaccess 內寫上:
/ ], M0 a+ f {7 w* @5 L- }' wAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
. C0 k G9 a2 Z( Q7 l" f2 s/ I* C<files sercet.html>
0 U5 P$ ]5 D% L( g8 M! u, P3 ^require user peter
8 P# n$ f1 D+ a% f# l, b</files>
( L& i1 U9 S' Y- l
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
" R! q& |5 B, `8 i
0 f4 e e Q3 l1 t5. 重新導向文件
( O2 y" O- L3 E.htaccess 內寫上:
/ G% O/ j* U# u9 F" S
Redirect /old
http://url/new
! I$ I6 P5 o* J$ ?當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
2 @" b6 k0 J2 y! w0 d+ C* n
Redirect permanent /old
http://url/new: r9 o4 Q8 Y; o
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
1 |, G5 t9 Y/ k% G0 E+ S# I2 V$ H1 K v5 g
6. 防止列出目綠內的檔案
6 G, Y+ B, ^' O* N9 ]
.htaccess 內寫上:
0 d/ ^+ `+ X& }+ Q7 r: J
Option -Indexes
9 y5 t4 z2 \8 @+ i9 S這便不能列出檔案目錄了
' z$ l! o% S8 f: S& L" H# i8 g; F.htaccess 內寫上:
5 s0 K) i* s; mIndexIgnore *.zip *.txt
& d8 S( I D$ F0 v0 q( G8 O這便不列出檔案目錄內的 .zip 與 .txt 檔了
! q9 l: ^+ A3 c% m
, v! g9 X5 B) R3 ?, G5 p, K# l& r註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )