[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
: I5 E' a8 ]& v5 `5 g, B
& q; s" Y. g! n H/ x1 f' L.htaccess
0 W9 @3 ~# h' n; ?' Q
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
. z" i1 b& Z" {: A8 O+ W a3 C$ U
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
9 @" L1 Q3 [/ i$ _1 D3 _' e--------------------------------------------------------------------------------
$ n, [$ F) b8 r- V7 T3 R1 z2 V
httpd.conf 的設定
( g* z7 ~! y& {9 A$ Q; ~加上或取消註解 (#) ]定改成 AllowOverride All
4 i' s: f2 g5 V; |然後儲存及重新啟動伺服器軟件
, w7 V R" F/ @1 v; L4 ~ F--------------------------------------------------------------------------------
+ {4 m' R0 O. R
.htaccess 的用法
$ D4 e+ s9 [* e* T8 f, O先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
2 m& W+ H w+ w; q6 I. j. o- X& {用法:
4 P( ]$ S! e7 j* h" g q1. 密碼保護
( x) p+ m1 k0 g) y1 S3 q" t
.htaccess 內寫上:
! I' H, U9 ^4 A- ^# {
AuthName "testing"
Z' F2 [; p: @# s! i. Y; A$ m0 d! r
AuthType Basic
1 L% e1 M H' O: G$ a/ z) G9 Q
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
9 B" C/ _; j3 ^& W7 ]
require valid-user
" ^. v* o$ R5 C4 ^5 D
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
5 D: W% O& m: W$ u/ G; k0 |AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
3 |0 a0 W9 m% u+ y9 e5 T
密碼檔案 (.htpasswd) 內寫上:
/ y$ A+ M; s; L: c/ Q8 }$ H$ E, juser1:password1
4 @! l+ @, l0 S- Iuser2:password2
+ X, X2 d/ c1 y
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
( @# M- X& i! J, b
" A$ w5 t4 {- ?0 @$ f, }6 p( U2. 自設錯誤報告文件
; Q, k4 \6 z2 Q8 T" G C+ _" r
.htaccess 內寫上:
' o! w; E7 c$ K+ R+ _7 OErrorDocument 404 /404.html
2 v3 m# H3 [( w( K% j# }# ^如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
# n% }2 f U" C7 x8 q% S
ErrorDocument 404 "<html><body>找不到網頁</body></html>
1 T( N4 ^6 H7 K7 _ErrorDocument 500 /500.html
I0 n9 P0 g3 ]/ p- T3 i6 v( R6 V0 R
3. 自設首頁檔案
0 z& d3 d! Y0 e, j) ?* H
.htaccess 內寫上:
% o* @! {# s; ^; D+ l8 r# x
DirectoryIndex a.html
- b7 x1 z6 a, @. T& M: u# R& Z首頁檔案便是 a.html 了
9 @( n* l8 U J8 C1 z
% m1 ~) H' h: Z
4. 禁止讀取檔案
! R! C8 ], L7 F' m
.htaccess 內寫上:
4 }9 T& L: E4 S5 m
<Files secret.html>
" D4 Q6 O, I* A$ j+ I8 N& \
order allow,deny
! q3 ^, v: m4 D2 @, g3 b0 udeny from all
2 N: v: s9 B& g& _0 @) B
</Files>
; O0 Q9 ^ ~& u3 L) p
deny from all 即所有人皆不能讀取 sercet.html
2 o+ A7 [1 y1 i; F
1 n; C" K4 M/ C而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
7 s- E) Q6 b. L4 U$ X- @: D/ ?7 f
.htaccess 內寫上:
% J. q/ A$ A$ a4 P
<filesmatch "\.jpg">
. m2 l8 V5 q% H5 y3 yorder allow,deny
* h& Z# ]# w6 i S9 a1 p
deny from all
- [5 B1 Q6 X* ?+ n+ S/ o</filesmatch>
% t& e7 C" Y9 p" ~8 Q4 X即所有人皆不能讀取副檔名為 .jpg 的檔案
$ w% [/ |8 _& L8 I# B# n. [
: ]% [4 |7 K. b- O* k7 p7 o3 v! P.htaccess 內寫上:
# c& w: k4 N& h. b7 R
<Files secret.html>
. Y. t+ S3 K* x
order allow,deny
+ O" T1 S" S) g! d
allow form all
) h$ J3 m9 V6 E/ g- h9 X& _
deny form 202.202
0 n2 ?7 e/ p/ t" T</Files>
* h' f" g) x9 |' _, o
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
/ y& u* w \/ O$ b
$ W- H% t0 y& n" q) O l8 ]8 f) D
.htaccess 內寫上:
8 n5 x3 M) H0 n<Limit GET>
$ T/ G2 e$ W5 [% yorder deny,allow
. B1 w7 W J' J6 `: g: o
deny from all
& M/ `1 _0 \+ e+ u5 C* _
allow from 202.202 domain.com
1 z2 a0 z5 J/ H2 _
</Limit>
# U. D8 s4 u* a即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
4 ^! B) ?3 H3 @# k
* @9 X% z# s7 \$ |.htaccess 內寫上:
# T5 x' q# l, AAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
+ j- X2 G u p* X- ^/ J<files sercet.html>
0 N! a6 r( C- s" b7 l" r% i
require user peter
; _' V* P2 q" k/ x</files>
# V& _% d2 o; q: D即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
* R6 M% X! _3 k: w- l, Q
% T( ?9 c/ }# L+ y4 `
5. 重新導向文件
( y0 ~/ J8 ^$ W! }0 k5 ~
.htaccess 內寫上:
" q4 |/ O. a$ ]7 `& M4 {, IRedirect /old
http://url/new# I" a4 G) \% N1 O
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
; J# m: |5 d+ V) J0 ^; k" iRedirect permanent /old
http://url/new
. _0 B$ g! @- x* k9 P當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new n5 m y6 E$ d/ Y+ a2 X+ y
* m/ p* b% \+ j+ U' G2 A. T
6. 防止列出目綠內的檔案
- y0 _. o- D w$ C: l.htaccess 內寫上:
7 m) ?- _3 C# t) p$ A9 F) LOption -Indexes
# ?, d- F1 j$ j. }
這便不能列出檔案目錄了
, t7 Q: M- @# e; ]; B
.htaccess 內寫上:
- U5 }" G/ T( S" |
IndexIgnore *.zip *.txt
( G( i l; v& L5 q; E0 h這便不列出檔案目錄內的 .zip 與 .txt 檔了
: U$ \" _3 v" F2 \
, T! U ]. E. m0 B m# ^5 F3 a* q: ]註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )