[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
! @1 s, i! y( `% o/ u+ ?
' m! M0 N9 `* f: w.htaccess
; i& m0 j8 z$ h6 ]% a
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
C& H- r8 `4 J8 P) E' _6 r.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
( T7 M9 G4 D0 i0 E2 X--------------------------------------------------------------------------------
2 H7 e' ^0 l1 L" g! A; Lhttpd.conf 的設定
7 Y( E+ M4 M+ j8 n
加上或取消註解 (#) ]定改成 AllowOverride All
5 {; W; ^3 G: L5 R0 n/ c8 f3 d
然後儲存及重新啟動伺服器軟件
( ^: ~" p) h! a$ n
--------------------------------------------------------------------------------
6 L/ T2 R4 G7 D4 p, J. c. Z
.htaccess 的用法
* {' S: l9 a7 {' y& A- H9 B先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
5 s# T4 z2 a" p用法:
7 f( x) E* Z5 K2 V h) B& f
1. 密碼保護
/ c! B/ Y- [9 y" M* [& p
.htaccess 內寫上:
% ?! l5 o* ~( I# O! ~* m% F8 zAuthName "testing"
9 Y, l( a* j- a* y
AuthType Basic
, d7 ]- _* d' ?AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
1 v- T# T( n1 W1 R- ]/ M% j0 w" X+ |4 _require valid-user
. S( h. ^5 }, c( c" u2 o5 b3 E/ hAuthName 是當你進入密碼保護時,瀏覽器出現的說明
1 O( I- n& S4 ^
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
" {8 P7 {0 ]9 f4 o/ ]/ g密碼檔案 (.htpasswd) 內寫上:
, u" S# i4 [! a# h3 u5 _) E& Fuser1:password1
! j0 Q+ p( S0 B. Y8 D9 ]user2:password2
3 [1 s( a" {/ M' _1 r/ [但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
1 k' s" z& T3 c$ K! t+ g$ N- {4 B
2. 自設錯誤報告文件
) K/ ?# V* ?+ X3 r- N# V
.htaccess 內寫上:
* i0 j6 g8 D" o2 y* v- g
ErrorDocument 404 /404.html
- D4 I( W& _7 @- R
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
7 x: j8 N- c* C1 a- ~$ k) bErrorDocument 404 "<html><body>找不到網頁</body></html>
4 U8 b& P2 }5 O- V2 E) q+ {5 EErrorDocument 500 /500.html
! Y0 R/ J/ z+ ^8 N# d3 k* w6 y- a
' ^1 }7 [: ?1 _) `% I- d: v3. 自設首頁檔案
3 W2 K$ D3 L v. m9 r& O.htaccess 內寫上:
5 O H+ W5 ~6 g( I+ i+ NDirectoryIndex a.html
5 Q1 _, ]; _9 i! _, I/ h3 \# }" n) s6 U首頁檔案便是 a.html 了
8 X: n- C. G2 C) v' _+ S5 v7 x# _
2 c0 v p/ t" n! d/ B4. 禁止讀取檔案
9 W1 K* K7 l9 O" g! S
.htaccess 內寫上:
9 }/ M, U' [: D; K0 G! d<Files secret.html>
. e* |/ O+ L" ?; Forder allow,deny
3 s# W/ P) S F. h2 Tdeny from all
: R! I! P; [, Z- N T</Files>
* s5 `+ [9 y/ ?" s2 h
deny from all 即所有人皆不能讀取 sercet.html
- ^: [( p9 O2 W, N; ^8 Z: \/ L) z9 u) A+ ~# c3 g$ C' ?* c
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
, r4 z, E0 {8 b
.htaccess 內寫上:
- Q7 ~- d% `6 |0 y; ?5 p9 \9 i
<filesmatch "\.jpg">
, N- L" b5 G) u- y$ s" b" \6 }order allow,deny
+ C! `3 q/ k" A# I3 m# t, f# ]
deny from all
0 |7 J) I% |6 S3 {7 S
</filesmatch>
7 f1 U8 z( T; u# P; z: O$ E2 S即所有人皆不能讀取副檔名為 .jpg 的檔案
: Y, p H j8 V' p) Q* ~/ ^2 N! f
# H4 H/ F% u# |% V0 P
.htaccess 內寫上:
: |- V6 @6 ~( e<Files secret.html>
$ e, F7 s$ u$ ^2 e9 y
order allow,deny
, V7 _. }% P+ s p6 a, ?! a' qallow form all
% O; Q+ t T L6 X( \1 I Rdeny form 202.202
+ \$ j1 c' D; u4 n* C</Files>
8 n+ s: o4 L N3 b/ k3 f4 f即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
; f5 }8 H2 Z/ V* P' R) L& c- L
; W7 }" }' B- Y' s) S4 t/ C.htaccess 內寫上:
. V. o5 K" {) l6 |* v3 J, |
<Limit GET>
. R' g9 r( J" Q2 K# g
order deny,allow
6 S( y% i( ^) A. Ndeny from all
* v; b! G$ u% e
allow from 202.202 domain.com
& Y6 R$ i; H% @0 d</Limit>
! F" ]2 P7 m2 y( E' z' r* r8 t
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
) g% z! L# o2 P: H9 p( c+ K. m2 {2 Q* V$ Z1 s7 ~* n
.htaccess 內寫上:
$ p5 F! G: R7 ]: C2 p5 G
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
" @0 z8 V# B* {
<files sercet.html>
: v1 D! s6 s b; C
require user peter
4 q7 k$ G; e8 a& k' c9 | K</files>
( @3 `, c$ L- I/ y
即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
3 o7 ~$ b9 X0 V% [& h
$ o9 w6 ]6 T6 n P& D& {+ S# J" P
5. 重新導向文件
3 l$ G' C. {2 |
.htaccess 內寫上:
, s- U( }+ m R- [7 K; d5 i' [Redirect /old
http://url/new6 z4 {3 m: Y2 p# R
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
o7 o& c% u7 X) s, y$ |
Redirect permanent /old
http://url/new
# P$ N7 B% I/ m& f當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new4 A" I8 S4 Y) n1 ~, ]# R) r; p/ h
/ S: p( N- \7 ]7 F0 x6 j# A
6. 防止列出目綠內的檔案
. B2 B% U, D5 W! E* R2 d9 [4 P. y" I! R.htaccess 內寫上:
" m/ E6 m) b0 O+ E+ h" r
Option -Indexes
3 w, f7 K) l- X* _) _
這便不能列出檔案目錄了
% W+ k) ^+ f( @
.htaccess 內寫上:
. S; l( ~5 C/ ]( gIndexIgnore *.zip *.txt
7 Q& W6 l- o' A& W5 `' `這便不列出檔案目錄內的 .zip 與 .txt 檔了
8 A, u) ]2 p) h4 B3 ~" l" ^" U, K( E
: p4 B5 Q. |* m' S4 W* C8 [註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )