打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
/ }, w! C7 ~/ Q/ g: Q9 X7 ^2 ~: W9 D' P4 I3 n+ v. }9 O7 E+ Y
.htaccess7 s1 n4 m# R0 u. z8 O1 w4 m
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
$ k* m( [9 \/ u! T- n( m) L.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件 6 y9 b, a! o8 M. r4 f% x
--------------------------------------------------------------------------------4 Y  p. \9 z& W, T$ I6 }
httpd.conf 的設定
0 W9 G) @  c* n+ n* D1 _加上或取消註解 (#) ]定改成 AllowOverride All
5 y$ v2 g5 ], Y然後儲存及重新啟動伺服器軟件
) P) y" K3 j) Z2 Y--------------------------------------------------------------------------------( u% V# R1 m3 R! E  `6 I3 F1 c
.htaccess 的用法. K: h( ]: j& c
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)1 z# \8 P; m" x- u- ]
用法:
+ \+ G( h+ i4 j( v3 B1. 密碼保護& H4 l% Q) @  y: I
.htaccess 內寫上:
" m; A( Q4 I/ f5 `% U6 ?3 V1 h2 n: |AuthName "testing"& R# B/ N! k" {6 O
AuthType Basic2 P1 G9 @! s! X! F3 |" d
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"3 D" {3 q/ B5 |2 T/ `+ Q
require valid-user! C+ e5 _- ^& l
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
. r0 K$ Y6 G: b7 u6 hAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
- U. R9 x" O* }( v) J& d密碼檔案 (.htpasswd) 內寫上:! L4 b* v. {! ?% h- L4 h
user1:password1
) K) }# P" ?2 K  _, \6 Luser2:password2" }8 A( f& U' r( n! A! S; m, W4 M4 p
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david7 {; m( o8 O9 H

" Y( S  C& B6 E$ M2. 自設錯誤報告文件
; h. `& f4 t% D: T. @/ d+ T.htaccess 內寫上:+ r/ Z$ N# F  U0 `4 R; C
ErrorDocument 404 /404.html* \$ |2 }5 r; C  G1 y8 ?
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
; k% g* ]! d  R0 {2 ?  }( A/ mErrorDocument 404 "<html><body>找不到網頁</body></html># P3 K/ @7 n' H1 P
ErrorDocument 500 /500.html
3 y1 P/ ?+ G0 ]9 K: y+ @2 N6 a$ O; O  z0 j
3. 自設首頁檔案4 L0 ^" G1 x3 n( h0 w" _
.htaccess 內寫上:
1 J& L5 L3 y( P/ FDirectoryIndex a.html1 O+ P+ m9 r6 f6 ^' E" {
首頁檔案便是 a.html 了
' P9 |' d+ r) X" b) j; O' B
/ u: R; u4 ?  z2 ]' E4. 禁止讀取檔案
2 d9 i, J" ?+ ?- n.htaccess 內寫上:8 G- \+ ^- [1 A/ w+ `; B" M
<Files secret.html>
" n0 ?' i/ I3 t5 e1 ~. x/ ^order allow,deny
" r% L/ ?, R" I3 I9 q5 c6 J- ~deny from all  c9 t$ x! K+ r7 D" e- ?
</Files>
& g" K5 p! X7 R, \3 T8 x" i3 pdeny from all 即所有人皆不能讀取 sercet.html/ F! ^' g  ^- {5 t
+ ^7 S6 w/ N: u. |! e( `1 }
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch2 r$ f( P- ?' K8 U
.htaccess 內寫上:/ v4 n. I' P$ X
<filesmatch "\.jpg">
+ D% s" B0 ^# A6 Y5 V0 L  M* [order allow,deny$ T, }& ?8 x+ m+ R( h: m
deny from all
( Y" i$ t% ?& r</filesmatch>
# k( E; f0 u) ~9 \4 X即所有人皆不能讀取副檔名為 .jpg 的檔案* L) F; G1 g: s% C  y% z
8 P; v/ B. Q8 G# B3 ]1 K
.htaccess 內寫上:
: J: z: c+ Z) ]; H" v) _<Files secret.html>: n1 B* e! T: g& V* H
order allow,deny
1 \0 d( S' }1 t2 Vallow form all
* T, K' K- i9 H( d/ Z9 f4 Bdeny form 202.202, j! o6 f* g: {. ]: o
</Files>
- ~7 r0 @7 A* R7 e9 B9 z即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案. u* ~! S7 x$ E! V7 a" G% X

3 }* b# _; l" W  S3 C.htaccess 內寫上:
! ?3 ?4 ^  C4 K$ e1 X. r5 A<Limit GET>/ h% `) ~' W& E
order deny,allow
0 T* y$ z- _9 B. l% ^6 Y$ n* K; \deny from all
8 v4 U( ^! _  H* y$ t9 u, Tallow from 202.202 domain.com) G# A$ o' {" |, E& Y% Z" O
</Limit>% b" b$ X6 d& }, z+ V" M8 x
即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容+ j) J) x* X& E' U# j- g

2 T$ _& o( K5 {% Z' y% p* B! D.htaccess 內寫上:2 h' |& m# |: a% r
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"3 d' ]& i: C, W! Q3 h) Z8 F" v. d
<files sercet.html>/ J  v# q# Q/ t0 M
require user peter! x: p% O  f9 r3 v1 i3 d9 y
</files>
3 ]' C- E  n% _5 T即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
" r" F$ D. j: e  E4 R. P. o# f0 Q6 T' J& s9 |
5. 重新導向文件8 B" x( ]' O& ~9 s+ t! |
.htaccess 內寫上:2 ~' E' r3 w5 M' O" @% }
Redirect /old http://url/new0 y* m& O& _  ~+ N! T9 t% _
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:
3 ^4 v" n$ m" L. b& cRedirect permanent /old http://url/new; _# _; _0 Y& K1 T
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new8 R: e3 ?! b6 ^6 V8 W

7 D! P* m0 A0 I9 e$ A8 q: H6. 防止列出目綠內的檔案
7 p2 K. A2 c# T! H& ?.htaccess 內寫上:
+ a1 x6 j5 u: W# Y9 N3 rOption -Indexes$ w; {6 o8 P' }; x
這便不能列出檔案目錄了
0 u% Q8 e: G# |8 g7 q: H9 l' _.htaccess 內寫上:7 f+ {+ t- X9 Y. B* [; m5 O) u
IndexIgnore *.zip *.txt
+ q" {- N' ]5 f這便不列出檔案目錄內的 .zip 與 .txt 檔了
/ u6 J! K; ?# i% L
+ H& @  \: ^* r) J註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下:
: N  @  d+ n- |2 n# M3 Y' n7 j: U$ Z! e& a# g9 G& c) l  P, B! y, z- j
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
1 @% q3 I" S8 ~, d& iAuthName 阿達的祕密基地 9 f8 B" e/ G  t8 |( T% G
# 編碼方式,目前只支援Basic一種而已。
% w2 t( ?/ i' m9 |+ ?AuthType Basic 7 m3 T" U& v; f" F/ Q
# 密碼檔的絕對路徑,可用htpasswd指令建立。 5 h, y, v2 V7 R8 H4 n( ^* O4 f/ Q
AuthUserFile /home/.../filename
* L+ d6 l" l2 F4 m: Q1 n8 ~# 若下面有指定 require group,則需要group檔的絕對路徑。
" Y6 G% {2 \: CAuthGroupFile /home/.../filename
5 P1 n# K* E2 W
0 k! T/ H2 B  |' @) A1 W  i0 j<Limit GET POST> : Y/ Y2 }! F9 i' X
require user user1 user2 ...
$ d: r- z) w0 V  m9 `0 Lrequire group group1 group2 ...
# A5 c3 K/ c0 ?- a7 [+ @' D</Limit>
+ W+ L( F) |1 \" A8 J4 m- B. i
) h. x6 K4 Y& X+ A0 P: c( g
$ W" ?# k* j& Q) r4 |) s& T它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: ) n7 u5 j" |' e7 p& U0 @: g- L
2 T2 B4 _2 Q+ `2 h7 n
group檔: # ?6 |+ c  r8 m8 @
group1:user1 user2 ... ) D2 r" a1 \/ S" z% N; _1 W  J
group2:user3 user4 ...
" `" c. }9 H, p! ]' F... 5 {( W2 e) v; @4 I" {0 g! R
2 P8 H2 Y6 l  l& H7 n; U
passwd檔: % c  V7 i! }( X
user1:password 4 s% k4 [& M8 G) _/ s6 F
user2:password ( y2 Z% a/ t4 N3 k; S
...
& O  |3 M- I$ _+ V; T
1 u( n- I4 G# h2 a7 i密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 # _5 o( v2 n2 x; p
# N, o5 y% n5 {1 @0 _; r
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
5 N5 o) z+ |) p2 `+ V8 ?  a5 P- _
7 |7 r- n: m' z' b) Q: tOK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題