[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
1 m, ^: m- K; u/ \. g+ I
; ^! O4 E: d$ h4 a" q. D5 c! g.htaccess
8 g' U7 Y Y* f' j.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
0 r& Y' c. }7 \# W.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
& \ D- @1 k# D4 ~! b" Q9 P( Q--------------------------------------------------------------------------------
) T |/ h# T: V3 j V/ E; _7 ]' v' @, hhttpd.conf 的設定
- d) v' y( W( }5 p3 @* p加上或取消註解 (#) ]定改成 AllowOverride All
3 L* z7 a% _2 h0 C1 `
然後儲存及重新啟動伺服器軟件
q6 y* b+ m5 j/ }) D# f--------------------------------------------------------------------------------
" N! b4 ~1 N' m% @4 e9 ~& n# f.htaccess 的用法
5 ]0 h6 G Y6 Z$ ^6 y1 ]8 g c# b4 v- D
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
" b6 T* K1 g; t2 Z
用法:
8 P9 e6 f* H6 f1 I% E5 _1. 密碼保護
- p: u# _1 {7 e/ a9 n.htaccess 內寫上:
. I( X" L% ]4 z0 N$ K9 v; r& Q- yAuthName "testing"
8 q8 h8 J. @, S C% d
AuthType Basic
0 Q' j. ^; I) X8 M% A$ vAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
8 R4 [1 {8 W; n$ Q: G$ F; [. v; T
require valid-user
0 o" O' `6 F5 d% q6 oAuthName 是當你進入密碼保護時,瀏覽器出現的說明
# ^" G# y8 K' \
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
0 ~- M9 v$ V& s
密碼檔案 (.htpasswd) 內寫上:
& t3 o7 y# y, V, G
user1:password1
' Q7 w8 O0 b! u; u
user2:password2
% T* t; l% ^8 i" y; W# n" _3 k但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
- ` K0 F- z' i5 X6 V0 Z: W! U+ c
- A, Y0 b. `/ S! T$ V
2. 自設錯誤報告文件
, {+ |/ a2 [" {7 k$ y.htaccess 內寫上:
% W5 L9 F+ S& x" m: }0 g/ \! O# o( h
ErrorDocument 404 /404.html
$ e$ c5 N* ~# B3 {$ f如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
$ J1 R0 k/ D( n7 j$ m' DErrorDocument 404 "<html><body>找不到網頁</body></html>
/ @7 b, M: Z/ t- Q( N1 P% e6 A& g* W+ o
ErrorDocument 500 /500.html
2 R" g+ `' I# ]& R; o9 R
$ [$ S- l2 ^- n4 F+ j ]- i0 U
3. 自設首頁檔案
c1 ^# I! C8 U4 j+ |6 K8 Y6 P0 y, [! y
.htaccess 內寫上:
0 |7 G5 u# ?% v" \9 ~ C0 Q- F7 w7 t- K
DirectoryIndex a.html
! @: C: V7 P X& V! h& h首頁檔案便是 a.html 了
7 R( h5 S' N5 @/ T2 K [( B# V9 i7 f/ l
) O9 ~! W6 Z- {, h* m( n
4. 禁止讀取檔案
8 X8 f9 h9 I1 r% J3 L) A- i8 @
.htaccess 內寫上:
' U3 ^2 |3 J) @; S<Files secret.html>
$ C0 g5 F7 g, @1 n2 X0 K" A N8 R
order allow,deny
]* M5 u( s5 v/ o: M5 Odeny from all
3 V1 z# k' _+ m$ E1 K</Files>
' ?" I/ Q, A0 k+ h6 w2 N
deny from all 即所有人皆不能讀取 sercet.html
3 L! J J; v6 D" E7 [! E P( s
8 ?+ f9 x, K1 F5 p9 X' W% u而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
/ Z% }; a) b4 k- |4 w5 M1 R.htaccess 內寫上:
- y# |. Z# x% ?: ^( G# I7 P# e" M<filesmatch "\.jpg">
2 Z6 p; Z% K U9 [; Y& B- j+ ]' j2 ]
order allow,deny
1 m- U8 s5 M4 @( I# `
deny from all
( _) A% k' N. s; d</filesmatch>
g; F7 S+ q* S; D& a
即所有人皆不能讀取副檔名為 .jpg 的檔案
- Z6 k" x" F& m. n9 ~, R
* N# u6 f( v9 J& Q
.htaccess 內寫上:
. S( [% F$ H2 Q, \( s ]' a
<Files secret.html>
) p' I4 U+ i$ t
order allow,deny
# ^7 L; n2 Z. T/ m3 O8 K- |/ @allow form all
. x$ G& p% _- I; {
deny form 202.202
% D* _& `' F: C+ Z1 y# N' U1 Y</Files>
$ P( j) \: _& S2 W) o# M即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
4 I/ f- l7 ^& q6 d
2 Q4 _) G$ ~( T
.htaccess 內寫上:
; r9 h) J! k1 f q9 X9 I% p5 o- V! E
<Limit GET>
/ n$ y$ ~+ c& Y) c$ f/ torder deny,allow
9 @: G1 |# M, Fdeny from all
& t& h. k& {) P1 n' C. ]. ballow from 202.202 domain.com
8 {$ e" z7 Z& v! X4 |</Limit>
' |3 o( @( z8 D6 _1 J
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
0 b# U% L3 h4 _0 Q# {+ O+ d
l) p2 ?3 m3 s! g! Y.htaccess 內寫上:
+ K( ^0 G Y s6 H/ I% T+ x
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
' P; k+ |! c9 G. n, {0 `<files sercet.html>
' D8 y# W' d1 r3 {$ h: U
require user peter
# N9 a3 c" W/ m+ _8 s</files>
8 S2 W2 p3 Q3 @" t% }即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
! [ o0 c* j! e1 _# u2 Z V" x( q& k3 G. m5 k
5. 重新導向文件
7 h' h# x. T; j$ E) F8 K. S.htaccess 內寫上:
3 `$ u, x3 S7 v* E( u- eRedirect /old
http://url/new; s" y# D/ N: F$ g& x2 |
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
! L& n1 a+ I0 I: pRedirect permanent /old
http://url/new/ x! E& ]7 n; n' a. D$ H
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new- T6 S$ c) t4 T9 v* A
1 p' j( y, e+ o% Q7 ~3 S6. 防止列出目綠內的檔案
% L3 K! R% H% M4 d! M- ?( _- a
.htaccess 內寫上:
2 D7 _% k- _: B1 ^/ _
Option -Indexes
+ Q* z8 S' E. p; n" }7 o
這便不能列出檔案目錄了
/ W1 h- m- B5 ?" Q$ B# M
.htaccess 內寫上:
" \: d, T* b( t4 t4 v7 q6 g
IndexIgnore *.zip *.txt
0 T# m* S/ Y0 w7 E* h' ` `5 L這便不列出檔案目錄內的 .zip 與 .txt 檔了
# X8 A+ N" G3 F6 e [" I
& J3 k# t( a6 {+ I: G: x
註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )