[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
6 ^0 _2 i$ K. Q' F; M% q
: N. K/ P* B- f B+ v* i
.htaccess
: w3 T+ t/ O9 S: S( j3 @8 I6 j
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
% p( Q6 z, F* T+ X; L& X
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
, I! u7 f4 ]0 F+ I
--------------------------------------------------------------------------------
) b4 j6 ` }! F( j' X& q$ [httpd.conf 的設定
2 J( a3 X9 @7 j) h- e5 g$ |加上或取消註解 (#) ]定改成 AllowOverride All
$ G$ o1 k& x# F$ h9 r- c; L- L然後儲存及重新啟動伺服器軟件
3 ^5 Y& [; O' t2 r--------------------------------------------------------------------------------
- p" a# h* a$ w2 `.htaccess 的用法
& S+ j, s6 w8 a- A, r先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
7 v" ]( w6 T% D' @" v
用法:
2 i2 G" z; n, A1. 密碼保護
; R% m9 ~: ?/ u! A.htaccess 內寫上:
@+ a$ E5 B WAuthName "testing"
- ~8 Z! ?: t. F* `: E+ f/ z
AuthType Basic
6 m' N1 \, v j5 x* ^8 IAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
. W3 D7 ?8 ^9 L3 ~+ L# ^
require valid-user
& k; X) u w8 s+ {AuthName 是當你進入密碼保護時,瀏覽器出現的說明
, {1 F4 k* c1 F# o+ N- h6 G' zAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
) j, {2 B) V/ r9 f- V
密碼檔案 (.htpasswd) 內寫上:
+ \8 P# C- _6 U: X3 I
user1:password1
$ n( o$ e7 Y2 d" n. c5 f( Huser2:password2
/ g( G4 \7 V. E" D
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
% X {6 W9 D' `' [' H
; q0 q' U& R6 n5 O3 Q1 y2. 自設錯誤報告文件
$ p2 K% h# Q @- R2 i7 \2 `.htaccess 內寫上:
7 K6 p7 @) n# [7 {) \3 sErrorDocument 404 /404.html
9 _' T/ Q G) ]8 J* _
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
; b' Q5 q: C; I4 T XErrorDocument 404 "<html><body>找不到網頁</body></html>
( m4 K+ M' x) JErrorDocument 500 /500.html
$ R' U; D) q2 }3 i+ I1 W h9 \3 Y" \( w( w+ ~
3. 自設首頁檔案
8 u5 X8 h7 N5 E9 w! W.htaccess 內寫上:
5 [$ S( G& S% ZDirectoryIndex a.html
5 D p2 K7 _3 L" B; v& O$ ~4 j3 R首頁檔案便是 a.html 了
9 ^0 Q9 c' B' G& ^7 B
8 f4 g: p: a5 n: {% O# l8 \; o2 q( Z4. 禁止讀取檔案
, V) R# G: n$ r.htaccess 內寫上:
8 r# i7 v2 F; Z8 T3 q8 `3 Y<Files secret.html>
. I- i5 z9 u7 k/ r* j
order allow,deny
9 z& x }) ^ L+ C
deny from all
4 ]. d3 h9 N$ n! L2 I! X$ l8 \+ X</Files>
* P$ `0 e5 u8 b9 Q5 O2 v, ^; [" fdeny from all 即所有人皆不能讀取 sercet.html
" k8 U" X- i$ W, w* c1 }/ h4 A$ s" q1 u6 L. [! h( _; q
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
+ \, k: G: u# q.htaccess 內寫上:
% b' L# [2 O7 _ t
<filesmatch "\.jpg">
4 S A- P/ t D+ }: R( y: |order allow,deny
x3 W% ?/ \) ]$ w0 P M
deny from all
- L, A2 u! t4 p$ q- V4 E1 x. v
</filesmatch>
$ ~! J, f' @$ V( Q6 c# d5 c
即所有人皆不能讀取副檔名為 .jpg 的檔案
* I! H. w; H( R; O7 f6 [/ S0 s9 u
* z- x/ p4 T' f( J% m.htaccess 內寫上:
% J# y* [ q/ i s1 l9 x: u7 [* ?
<Files secret.html>
" Y7 T" R2 f) q' @+ rorder allow,deny
1 `$ m. x5 `& c C# g
allow form all
. O( I: g, g3 w* ~. s7 n# z
deny form 202.202
* l5 [; a6 |6 Y! C! s+ b
</Files>
6 R2 _3 a- ?& o8 `7 @
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
5 m8 X9 |( w+ W E6 I- p' _
% Y" k0 G; ^+ u" O5 U
.htaccess 內寫上:
' S5 P" U# A+ S) F) e<Limit GET>
" @, h# ~# c" Y7 ` Y
order deny,allow
7 f3 F' }' }& ` \1 E
deny from all
. a V0 K, t* v W" k
allow from 202.202 domain.com
& ?7 W' _( v$ ]
</Limit>
7 y! g A! s( b G( E8 `$ R即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
9 m: u6 ?# |/ g/ c' _. i8 @4 R
1 y" P% G5 }: ?, n5 e7 n0 w.htaccess 內寫上:
t, u1 e6 X+ |' I$ `9 Z: FAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
2 I9 h4 N, r( S' A
<files sercet.html>
2 f( c' O( I! e- Nrequire user peter
7 m. Y6 F2 d7 h</files>
+ n/ k' s" j5 c9 L1 j* X) F1 Y即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
9 w, Z* h+ } @% k8 M
8 L2 p. n$ B$ s) g+ E3 F
5. 重新導向文件
# D9 o7 s- \, b; k
.htaccess 內寫上:
7 {; O' }) l7 Q# Y
Redirect /old
http://url/new! W4 @0 R( m' L
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
2 |2 h0 f9 S, }Redirect permanent /old
http://url/new0 c% p% i- }9 D$ c
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new7 ^$ L; b C( x
) [( {! C8 r- ?( X6. 防止列出目綠內的檔案
- U* X3 E7 }* v3 R
.htaccess 內寫上:
4 ?1 E1 Y I& Y. B. s( {; N! X
Option -Indexes
' [; s& c0 g2 h- ~8 P這便不能列出檔案目錄了
6 j2 ]2 P5 z$ g i: w) w6 h% W
.htaccess 內寫上:
1 E9 F( n9 N) t% ^IndexIgnore *.zip *.txt
2 x5 p, _; l7 E8 d7 W( |
這便不列出檔案目錄內的 .zip 與 .txt 檔了
% J) H9 q1 D* s
2 @" L! e3 h8 a9 N註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )