打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法 6 ^0 _2 i$ K. Q' F; M% q
: N. K/ P* B- f  B+ v* i
.htaccess: w3 T+ t/ O9 S: S( j3 @8 I6 j
.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了% p( Q6 z, F* T+ X; L& X
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件 , I! u7 f4 ]0 F+ I
--------------------------------------------------------------------------------
) b4 j6 `  }! F( j' X& q$ [httpd.conf 的設定
2 J( a3 X9 @7 j) h- e5 g$ |加上或取消註解 (#) ]定改成 AllowOverride All
$ G$ o1 k& x# F$ h9 r- c; L- L然後儲存及重新啟動伺服器軟件
3 ^5 Y& [; O' t2 r--------------------------------------------------------------------------------
- p" a# h* a$ w2 `.htaccess 的用法
& S+ j, s6 w8 a- A, r先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)7 v" ]( w6 T% D' @" v
用法:
2 i2 G" z; n, A1. 密碼保護
; R% m9 ~: ?/ u! A.htaccess 內寫上:
  @+ a$ E5 B  WAuthName "testing"- ~8 Z! ?: t. F* `: E+ f/ z
AuthType Basic
6 m' N1 \, v  j5 x* ^8 IAuthUserFile "C:/Apache/htdocs/testing/.htpasswd". W3 D7 ?8 ^9 L3 ~+ L# ^
require valid-user
& k; X) u  w8 s+ {AuthName 是當你進入密碼保護時,瀏覽器出現的說明
, {1 F4 k* c1 F# o+ N- h6 G' zAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置) j, {2 B) V/ r9 f- V
密碼檔案 (.htpasswd) 內寫上:+ \8 P# C- _6 U: X3 I
user1:password1
$ n( o$ e7 Y2 d" n. c5 f( Huser2:password2/ g( G4 \7 V. E" D
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
% X  {6 W9 D' `' [' H
; q0 q' U& R6 n5 O3 Q1 y2. 自設錯誤報告文件
$ p2 K% h# Q  @- R2 i7 \2 `.htaccess 內寫上:
7 K6 p7 @) n# [7 {) \3 sErrorDocument 404 /404.html9 _' T/ Q  G) ]8 J* _
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
; b' Q5 q: C; I4 T  XErrorDocument 404 "<html><body>找不到網頁</body></html>
( m4 K+ M' x) JErrorDocument 500 /500.html
$ R' U; D) q2 }3 i+ I1 W  h9 \3 Y" \( w( w+ ~
3. 自設首頁檔案
8 u5 X8 h7 N5 E9 w! W.htaccess 內寫上:
5 [$ S( G& S% ZDirectoryIndex a.html
5 D  p2 K7 _3 L" B; v& O$ ~4 j3 R首頁檔案便是 a.html 了9 ^0 Q9 c' B' G& ^7 B

8 f4 g: p: a5 n: {% O# l8 \; o2 q( Z4. 禁止讀取檔案
, V) R# G: n$ r.htaccess 內寫上:
8 r# i7 v2 F; Z8 T3 q8 `3 Y<Files secret.html>. I- i5 z9 u7 k/ r* j
order allow,deny9 z& x  }) ^  L+ C
deny from all
4 ]. d3 h9 N$ n! L2 I! X$ l8 \+ X</Files>
* P$ `0 e5 u8 b9 Q5 O2 v, ^; [" fdeny from all 即所有人皆不能讀取 sercet.html
" k8 U" X- i$ W, w* c1 }/ h4 A$ s" q1 u6 L. [! h( _; q
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
+ \, k: G: u# q.htaccess 內寫上:% b' L# [2 O7 _  t
<filesmatch "\.jpg">
4 S  A- P/ t  D+ }: R( y: |order allow,deny  x3 W% ?/ \) ]$ w0 P  M
deny from all- L, A2 u! t4 p$ q- V4 E1 x. v
</filesmatch>$ ~! J, f' @$ V( Q6 c# d5 c
即所有人皆不能讀取副檔名為 .jpg 的檔案* I! H. w; H( R; O7 f6 [/ S0 s9 u

* z- x/ p4 T' f( J% m.htaccess 內寫上:% J# y* [  q/ i  s1 l9 x: u7 [* ?
<Files secret.html>
" Y7 T" R2 f) q' @+ rorder allow,deny1 `$ m. x5 `& c  C# g
allow form all. O( I: g, g3 w* ~. s7 n# z
deny form 202.202* l5 [; a6 |6 Y! C! s+ b
</Files>6 R2 _3 a- ?& o8 `7 @
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案5 m8 X9 |( w+ W  E6 I- p' _
% Y" k0 G; ^+ u" O5 U
.htaccess 內寫上:
' S5 P" U# A+ S) F) e<Limit GET>" @, h# ~# c" Y7 `  Y
order deny,allow7 f3 F' }' }& `  \1 E
deny from all. a  V0 K, t* v  W" k
allow from 202.202 domain.com& ?7 W' _( v$ ]
</Limit>
7 y! g  A! s( b  G( E8 `$ R即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
9 m: u6 ?# |/ g/ c' _. i8 @4 R
1 y" P% G5 }: ?, n5 e7 n0 w.htaccess 內寫上:
  t, u1 e6 X+ |' I$ `9 Z: FAuthUserFile "C:/Apache/htdocs/testing/.htpasswd"2 I9 h4 N, r( S' A
<files sercet.html>
2 f( c' O( I! e- Nrequire user peter
7 m. Y6 F2 d7 h</files>
+ n/ k' s" j5 c9 L1 j* X) F1 Y即只允許 .htpasswd 內列出的 peter 讀取 sercet.html9 w, Z* h+ }  @% k8 M
8 L2 p. n$ B$ s) g+ E3 F
5. 重新導向文件# D9 o7 s- \, b; k
.htaccess 內寫上:7 {; O' }) l7 Q# Y
Redirect /old http://url/new! W4 @0 R( m' L
當用戶要求 /old 時,伺服器便把其重新導向至 http://url/new ,或在 .htaccess 內寫上:
2 |2 h0 f9 S, }Redirect permanent /old http://url/new0 c% p% i- }9 D$ c
當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至 http://url/new7 ^$ L; b  C( x

) [( {! C8 r- ?( X6. 防止列出目綠內的檔案- U* X3 E7 }* v3 R
.htaccess 內寫上:4 ?1 E1 Y  I& Y. B. s( {; N! X
Option -Indexes
' [; s& c0 g2 h- ~8 P這便不能列出檔案目錄了6 j2 ]2 P5 z$ g  i: w) w6 h% W
.htaccess 內寫上:
1 E9 F( n9 N) t% ^IndexIgnore *.zip *.txt2 x5 p, _; l7 E8 d7 W( |
這便不列出檔案目錄內的 .zip 與 .txt 檔了% J) H9 q1 D* s

2 @" L! e3 h8 a9 N註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: 2 Y$ B9 _, w( V" n+ A' V3 Y

* g% y7 [( i$ r& E# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。 4 s. k( J; y# r' ?
AuthName 阿達的祕密基地
6 _2 w) D/ N- r3 A& b: ]8 j: J# 編碼方式,目前只支援Basic一種而已。
) W! U2 `7 g; _+ d# c& c* j# g4 UAuthType Basic   A9 l/ s2 V8 ~
# 密碼檔的絕對路徑,可用htpasswd指令建立。
6 A4 P, w6 G5 Z$ l9 GAuthUserFile /home/.../filename
+ }0 u: r/ k+ ^( y+ {# 若下面有指定 require group,則需要group檔的絕對路徑。
: r! Q: X0 x' f0 aAuthGroupFile /home/.../filename
& ]8 F* a% R, @" x- c( S1 F% J. J  O, U% X5 l7 U- |
<Limit GET POST> - M. z; Z$ b; z/ b* y* Q+ K
require user user1 user2 ... $ j! O; d' h% G- N
require group group1 group2 ... ! W1 P* s* q( u  U8 k8 L1 Y" q$ [3 [
</Limit>
: |4 k' L! k! O5 R: b
. `2 T6 R* k5 Q* R/ r0 {  B* f/ @" y4 J+ w9 d3 }4 d  R
它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式:
5 l8 [) s0 r2 O& W; m- y
: W. `4 }8 L, E8 ]$ h  F5 xgroup檔:
" t5 X# b) S: _6 J; f4 ?3 }3 f3 Vgroup1:user1 user2 ... $ ]: W+ p& b, x8 K
group2:user3 user4 ... 7 u9 R& a# m6 T
... 3 {: c  J' j% o/ P0 Q
: H8 ]. B1 g& E
passwd檔: # t( l! q: u8 S% ~- n" U
user1:password ' t8 m" |' C# Y& `- t
user2:password , `9 c9 t% D, b# {! |) F. P$ \
...
* d7 x4 x/ _9 `  m  H
# h. i, I/ I5 s, q密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 3 _/ p  [7 E1 U6 P
  f) ?" J+ x6 v7 U: K
另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。
5 l9 B5 w: u4 |; Z, h) T* l* t
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題