打印

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

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

[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
: I5 E' a8 ]& v5 `5 g, B
& q; s" Y. g! n  H/ x1 f' L.htaccess0 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 Basic1 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 all2 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 的 filesmatch7 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.com1 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> )

TOP

首先在你要保護的目錄下建立一個名為.htaccess的檔案,內容大致如下: " Z$ X: j: r4 Z! U" K& ]& g2 {
* |" f1 ?/ M. k1 C# o" b1 N3 F' Y1 P
# 隨便取個名字吧,它會出現在瀏覽器的蹦出視窗中。
: D: b. z* f5 v: }# P' YAuthName 阿達的祕密基地
# t4 _6 K$ T( h9 ]/ P( b# 編碼方式,目前只支援Basic一種而已。   L+ L& ?7 A( k, o
AuthType Basic
. k! j) b2 H( c$ v/ y" O# 密碼檔的絕對路徑,可用htpasswd指令建立。   q1 q  Y) }# j3 v8 i1 l0 \. u
AuthUserFile /home/.../filename 3 g9 ?, \, s) y
# 若下面有指定 require group,則需要group檔的絕對路徑。   m9 Z6 t5 Q3 |, _/ D+ ~
AuthGroupFile /home/.../filename 4 w/ V4 |; q) D/ e  U3 M% I  ~3 N/ ?! R

' Q, h$ c9 v# K. t<Limit GET POST>
* m( m, t7 X/ T) [require user user1 user2 ... 0 I) f- a6 o1 C: ^
require group group1 group2 ...
) y$ _) N  \( D% b7 q5 D3 [</Limit>
( z7 B# f, L7 [
( K& {" S/ _7 q7 n9 B
) ?8 k  Z5 o0 k7 j$ v( Y' p+ H它的密碼認證方式有二種,一種是指定users,也就是只有指定的username才有資格進入這個受保護的目錄。另一種是則指定group,凡屬於指定的group的users才有資格進入這個受保護的目錄,而group中到底有哪些users是記錄在AuthGroupFile中所指定的檔案,users的密碼檔則是指定在AuthUserFile中。且讓我們來看看這兩個檔的格式: 2 W8 f' Z0 d% n  `
7 E, x" O! v; g3 O: H1 ^+ C9 N  d& O
group檔: 6 u# T! ~2 e. ]& {: |
group1:user1 user2 ... 3 ~. _! H1 I6 X
group2:user3 user4 ... , b3 _1 j) Y! S5 M
...
0 w3 J* }2 }  W/ {$ e" R% L2 Q- F/ M3 w" l9 i
passwd檔:
) y6 Z8 o. J5 b. H* a9 F$ Guser1:password
! q( f' u) j. F# ^, e5 yuser2:password
# k. ~7 e. s6 [3 W' l... 2 u% J& Y; E; w5 Q: N( ?
' W$ Y$ ]. r. M0 B4 A
密碼檔裡的密碼是編碼過的,你可以使用htpasswd指令來建立密碼檔或新增users。而且由於密碼是用crypt函數編碼的,所以你也可以自己寫個CGI程式來新增users。 3 r/ N/ e$ {6 v, d' n

; n- @! z6 K! T/ W+ f/ ?+ |3 k# l另外還有個安全問題要提醒你:密碼檔不要放在www文件的樹目錄中,最好是放在www目錄外面,以免密碼檔被不法之徒偷去猜密碼。 : E* y/ B' {& y- L; k+ f+ U' B
& |& j% h9 N4 i/ }
OK!!就這麼簡單,現在你可以試試看成功了沒...

TOP

發新話題