[Linux] [轉貼]Apache 網頁認證.htaccess 設定方法
* r/ h- |' l H* w, |* N7 y
6 V! b/ N- _* v0 Y# ].htaccess
! I# s$ G- ^" e0 n; q# L7 t( I5 ~0 _9 ?.htaccess 可放在任何一網頁目錄內,當該目錄在 httpd.conf 設定不是 AllowOverride None 便可使用 .htaccess 的功能了,而設定作 AllowOverride All 更可使用 .htaccess 的所有功能了
' n$ |/ ]( c3 S0 z3 u
.htaccess 可用作對該目錄及其子目錄進行取存控制,而不用修改 httpd.conf 及不用重新啟動伺服器軟件
! l+ |& S, }7 ~6 B
--------------------------------------------------------------------------------
/ S7 a+ x; Z/ F5 D, h; ^2 h! Rhttpd.conf 的設定
( J8 F- V$ R# F+ t( B8 ?. o' z* {5 c
加上或取消註解 (#) ]定改成 AllowOverride All
/ U% O' L* s* h6 o' Z @$ Y. z然後儲存及重新啟動伺服器軟件
; E* i# C9 V9 K
--------------------------------------------------------------------------------
7 U- L) ^( ~3 @! D# i1 k
.htaccess 的用法
9 \# d+ H, ~3 W. t4 `$ @2 E
先把 .htaccess 放在要用的目錄內 (Windows 系統內不可以直接把檔案改名作 .htaccess ,需用間接的方法,如在指令模式下 ren filename.txt .htaccess 或用 FTP 軟件修改該檔名)
! v8 X% f5 k" B+ {- r( R0 w
用法:
+ L4 u# `" E' q2 ~. R8 U+ u
1. 密碼保護
3 U0 L7 V C; {' K% ~
.htaccess 內寫上:
5 l [0 P/ A/ m/ n9 T) _! WAuthName "testing"
) }* {4 E. t/ J, n" lAuthType Basic
; t, ^9 G( o4 c5 ]) L0 W) F2 m' C
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
& c- V, E$ K4 ?4 O+ drequire valid-user
. n1 X2 t- s( [8 r o0 {! S$ {
AuthName 是當你進入密碼保護時,瀏覽器出現的說明
- V! H# c& ^# K4 B9 i+ d4 K# iAuthUserFile "C:/Apache/htdocs/testing/.htpasswd" 是密碼檔案的位置
3 i9 B T+ ~; G0 G# v) V, K密碼檔案 (.htpasswd) 內寫上:
. ^0 ~; a6 ^5 `8 f, W7 b: [) y
user1:password1
3 [, D8 i" o9 N( h( Uuser2:password2
+ E) T. F E, [' b
但密碼不應直接寫上,即是如果有一使用者是 test ,密碼是 password ,先用 C:\Apache\bin 內的 htpasswd.exe 把密碼加密,用法如下] require group group1 ,因此只有 group1 的使用者可通過,即 john , peter 及 david
- x( Z, h( r3 F1 C
n. d2 M4 E& x. R' z/ q+ M2. 自設錯誤報告文件
: c! E! i: Z+ w8 j5 F- z7 x( M. ~+ ?3 X
.htaccess 內寫上:
F: a& n ~1 D3 {( L
ErrorDocument 404 /404.html
- o2 T5 ? A m+ c# T
如果找不到網頁時,便輸出 404.html 的內容,其他錯誤時做法亦然,如:
0 ]; S0 L. b' P3 d) w% v# n4 v* Q$ dErrorDocument 404 "<html><body>找不到網頁</body></html>
4 s j; }& }: g: qErrorDocument 500 /500.html
2 t/ E# @; y+ y v3 o8 Q
, W, n" d+ [3 g- S; _3. 自設首頁檔案
6 W, G4 D7 \2 e
.htaccess 內寫上:
& u0 R( d0 p: ^6 c% C' \* t
DirectoryIndex a.html
4 R- l- u& R7 p5 H7 G$ c8 l* d; `
首頁檔案便是 a.html 了
f ~8 U8 x2 `4 Z" S% g
_/ f; I* @% v$ o
4. 禁止讀取檔案
! d2 y! h: j5 E, P/ L% L. U0 s5 H.htaccess 內寫上:
* R) G& j/ M8 h<Files secret.html>
: P0 g; a$ W5 h: i# u- T/ \order allow,deny
6 i7 Z. q, u/ x( O0 P9 a9 C
deny from all
* g3 }: x. Z% @' u# C6 w* }/ Z; Y
</Files>
' T2 L& M! h# T |# M" t
deny from all 即所有人皆不能讀取 sercet.html
! A. m2 F6 W C, H9 S
) b( F9 c8 D0 t: b9 m9 ]
而 Apache 1.3 以後的版本,更可以用支援 regular expression 的 filesmatch
1 f% B4 m/ Y5 T( |.htaccess 內寫上:
5 [$ ?& R ~& B3 G2 q
<filesmatch "\.jpg">
5 _- U `) g9 ~0 H$ ]order allow,deny
: ~* }" L7 t) l4 G0 H- F: b0 ]( sdeny from all
% W4 {& Q- v+ v- O# P6 g</filesmatch>
5 f8 }# o b1 S T8 O+ L6 t0 Q
即所有人皆不能讀取副檔名為 .jpg 的檔案
# q5 i# ?0 y3 H3 V6 G+ j' G% r( ^3 n+ s: d% J
.htaccess 內寫上:
8 q# }: v* ]' t& c3 r) C
<Files secret.html>
2 g% Y5 s4 ~/ s* B# E$ u' Zorder allow,deny
! H# d1 x. {. o- D9 w* X! J* q+ [
allow form all
5 B# P0 w- O3 ~( {
deny form 202.202
r9 h3 o" F' n, d3 E+ p* S! t</Files>
$ L& S& o. f* W& W8 `
即 ip 是以 202.202 開頭的不能讀取副檔名為 secret.html 的檔案
% G& B2 U( d% m
! C$ C Z& }$ k* R
.htaccess 內寫上:
. y0 m& n c: ]( i9 E! T: m0 A9 p
<Limit GET>
. h, X+ H/ K6 t F7 t$ a
order deny,allow
0 n4 j+ M7 Y& R0 M/ ddeny from all
; g9 B3 p# O# c
allow from 202.202 domain.com
. P7 c: ]" k0 U- |
</Limit>
4 X7 \7 S2 y, q6 [即只允許 ip 是以 202.202 為開頭或域名是 domain.com 的讀取此目錄內的任何內容
& k! p3 n2 y7 Z/ t. }3 d/ l/ e3 n8 f+ F! W, F0 R
.htaccess 內寫上:
- ^" A/ T8 w9 c2 P; \
AuthUserFile "C:/Apache/htdocs/testing/.htpasswd"
8 ]+ N' [3 O9 ]( U- ~9 C% Z& R<files sercet.html>
2 f0 H% S& g1 K1 p! Orequire user peter
5 |" u8 T# u& L
</files>
" b5 V' X- i ?即只允許 .htpasswd 內列出的 peter 讀取 sercet.html
# C+ t- b3 Z" T! L: Y1 D% `8 X
( ^3 @5 | ^. j- U9 Q5. 重新導向文件
! ^, ?( g) W4 R6 H.htaccess 內寫上:
1 u, r* p7 v8 h. S" M, \. `# fRedirect /old
http://url/new" t4 o. ~& a6 d/ E; Y4 m5 H
當用戶要求 /old 時,伺服器便把其重新導向至
http://url/new ,或在 .htaccess 內寫上:
1 \! b! I' n4 o) E) xRedirect permanent /old
http://url/new
1 b8 Z" G5 l" j! f- h# K% p當用戶要求 /old 時,伺服器便叫瀏覽器把其永遠重新導向至
http://url/new
( P( K) Q! u! k' D9 I
8 y* G6 e; ^6 u2 l6. 防止列出目綠內的檔案
$ u$ W# L$ g! q- L1 t
.htaccess 內寫上:
' v% `. r- \& C2 ^2 ]2 K E0 [Option -Indexes
& w$ H2 \! P; i5 J: x' O這便不能列出檔案目錄了
# W( @% W! V7 R; U- c1 [' K- o' @
.htaccess 內寫上:
+ M: R( }* y, K; d& C5 O: l. tIndexIgnore *.zip *.txt
" O# _; m' T3 X. F9 G( e) }
這便不列出檔案目錄內的 .zip 與 .txt 檔了
+ ?5 @" `1 i9 k, P2 p
( W6 C7 @0 X- l$ Q) D, [% u' T$ O8 K% Y註: .htaccess 的大部分內容 (如:密碼保護) 可以寫回 httpd.conf 相應的目錄設定內( <Directory> )