打印

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法

[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 All3 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.html2 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,deny1 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> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: 6 U+ ^4 m! x5 Q: `: a
2 x! D6 A  y  q5 c7 t- W9 o9 w
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。 6 R$ I! Z8 Z! L0 L* |* H0 w
AuthName 阿達的祕密基地 : o1 q. s+ X! C8 z9 e) J) z
# 編碼方式,目前只支援Basic一種而已。 ) W# p9 G) U1 u' s
AuthType Basic : u  r* K0 r  ^' \
# 密碼檔的絕對路徑,可用htpasswd指令建立。 ) l2 y8 m" T3 S" `
AuthUserFile /home/.../filename
" G6 i% d+ A3 I  w# 若下面有指定 require group,則需要group檔的絕對路徑。 4 d: `. {. T/ ~9 U
AuthGroupFile /home/.../filename 4 t$ i1 f( Q# z+ O/ `9 J
* q: r" z: u9 i0 h! D) q
<Limit GET POST>
; l. M* u. J, p7 H7 Y) Y( a, brequire user user1 user2 ... 4 w* q1 [2 K2 p, Z( I
require group group1 group2 ...
: z1 r. c+ U- ?% B) U! D9 y" y</Limit>
# h+ Y0 U, y1 y& w6 V# x
1 H% o( g+ D2 L
$ n) H7 i1 e# E+ J9 O7 A' E9 }( Z它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:
8 L/ {3 f) B; o$ G- b4 C" \- f- A4 j! F7 [- L  D! n8 V
group檔: ( x: u7 X( }; \9 A
group1:user1 user2 ... 0 @: C' M* {; A& @
group2:user3 user4 ... / `# l% U, Q7 v
... ; T, r% d6 d0 p9 N8 i5 T4 W

! H' a9 E7 A4 L  L% i% q) upasswd檔: 0 R5 l$ ^8 O  a4 y5 x: B3 W# U2 B
user1:password
. x6 H1 }! x" L; [user2:password ! W" }; N- l7 E! ?. _2 c4 Z
... $ e& V5 d* ?& f+ D2 c+ k4 \
( }; r0 [3 M9 R' f
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 ) }. N9 K# H5 H

( z+ m  f) S9 u  b另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 & y% e: u5 v8 ^
; }) |; P2 f2 W: ~2 I5 L
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題