.htaccess文件用好的話對網站安全及網站綜合設置能起到很好的輔助作用。很多新手(包括我)對此文件的設置有很多不明白,本人在網上搜索了一些比較好的應用實例,希望對大家有所幫助!
& Y8 ~4 w. o- M4 { o1 A ` O3 C$ F! `5 R& o8 X# I- ^
一、如何創建.htaccess文件
" Y: A) W; o# J方法1.* H+ r2 q: i5 i/ D, C* @" h, L' N
- <font size="3">1. 新建 Windows記事本,並打開;9 D5 S1 `2 l9 P+ t0 ]; ?
- 2. 選取另存新文件「文件->另存為」;; v: N1 j2 d$ I
- 3. 在另存為的「保存類型」下拉選單中選取「所有文件」類型;$ P3 Y3 B9 O2 n3 Y! x
- 4. 這時就可在」文件名」中輸入 .htaccess ;- ~- E$ u0 L, K; U
- 5. 選取要另存的路徑再按下保存,一個.htaccess 文件就新增完成。</font>
複製代碼 方法2.此時的cmd窗口路徑是C:\Documents and Settings\username>& g1 c$ I0 j: r/ k4 [- x: o6 K
鍵入以下(不包括括號內信息):- copy con .htaccess (回車)2 V2 G, B5 b: [9 t9 k! S+ N
- (按Ctrl+Z 回車)
複製代碼 屏幕提示如下:- C:\Documents and Settings\admin>copy con .htaccess
7 d6 k7 `8 W& s9 A# J - ^Z
7 R2 {3 y& g2 |- f - 已複製 1 個文件。
複製代碼 此時回到桌面,雙擊我的電腦進入C:\Documents and Settings\username& R, ?! X, K+ [' P
即可看到你想要的文件 ".htaccess"8 }3 ]( [7 G& d
/ a9 Y. L4 R7 B$ z
二、.htaccess文件設置技巧23個規則
5 Z( |( `: E! ?$ |4 |只適用於linux主機,WIN主機無法定義1 _& I' t) h9 |8 o7 b' h( n& l
.htaccess 文件 (Hypertext Access file) 是Apache Web服務器的一個非常強大的配置文件,對於這個文件,Apache有一堆參數可以讓你配置出幾乎隨心所欲的功能。
4 i0 B+ k4 i4 [( s% Q0 c另外,因為.htaccess 是一個相當強大的配置文件,所以,一個輕微的語法錯誤會造成你整個網站的故障,所以,在你修改或是替換原有的文件時,一定要備份舊的文件,以便出現問題的時候可以方便的恢復。! H5 H0 W6 s& C5 g' [6 T
1. 使用.htaccess 創建自定義的出錯頁面。對於Linux Apache來說這是一項極其簡單的事情。使用下面的.htaccess語法你可以輕鬆的完成這一功能。(把.htaccess放在你的網站根目錄下)- ErrorDocument 401 /error/401.php
3 e4 P9 k, i1 k' I7 D - ErrorDocument 403 /error/403.php2 ]$ Y+ e8 W" @' d1 G7 |' h) z$ R
- ErrorDocument 404 /error/404.php
& r" D$ a, Z. `1 i6 x( i2 O+ P- |$ Y - ErrorDocument 500 /error/500.php
複製代碼 2. 設置網站的時區- SetEnv TZ America/Houston
複製代碼 3. 阻止IP列表
. `* v. o4 w7 |( }3 G有些時候,你需要以IP地址的方式阻止一些訪問。無論是對於一個IP地址還是一個網段,這都是一件非常簡單的事情,如下所示:- allow from all
, e7 e! U0 y6 x& o# R+ e - deny from 145.186.14.122
S7 }$ S5 P" b% s! f. R0 Y - deny from 124.15
複製代碼 Apache對於被拒絕的IP會返回403錯誤。4 }, {4 s5 z2 x6 u3 Y8 l/ q1 Q9 m
4. 把一些老的鏈接轉到新的鏈接上——搜索引擎優化SEO- Redirect 301 /d/file.htmlhttp://www.htaccesselite.com/r/file.html
複製代碼 5. 為服務器管理員設置電子郵件。6. 使用.htaccess 防止盜鏈。如果你網站上的一個圖片被別的N多的網站引用了,那麼,這很有可能會導致你服務器的性能下降,使用下面的代碼可以保護某些熱門的鏈接不被過多的引用。- Options +FollowSymlinks& [3 b. G- n% K6 ?
- # Protect Hotlinking
8 M* o) C. r4 L* R8 U1 B. _. O - RewriteEngine On' Z8 J; J# A$ l# T
- RewriteCond %{HTTP_REFERER} !^$$ x% V6 m4 q% C+ P q
- RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/[nc]
. N9 z8 O/ m9 A - RewriteRule .*.(gif|jpg|png)$http://www.th7.cn/Article/UploadFiles/200908/20090824122550889.png[nc]
複製代碼 7. 阻止 User Agent 的所有請求- ## .htaccess Code :: BEGIN- Q& [4 Z8 y" h
- ## Block Bad Bots by user-Agent
+ C* F; P( {4 R- c - SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]) ]8 r+ m/ u( z& l. W
- SetEnvIfNoCase user-Agent ^Java.* [NC,OR], [9 N7 [: ` L0 K& v; m! g& L
- SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]0 K& R' Y: f! Q" l& X9 Q- f- g
- SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
, f; G7 \- U& h1 f8 V# e/ @$ e - SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
( l2 P0 Q: V' f& t( P' t9 g9 L - SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]4 d) P, k6 w- [. U. V
- SetEnvIfNoCase user-Agent ^Zeus [NC]! W ?* P" B& ]! {& H$ k
- Order Allow,Deny
$ y* i u/ E. E! O: I - Allow from all: b+ g' x3 v6 J( U! a
- Deny from env=bad_bot2 F+ I9 O8 U6 O) J4 E
- ## .htaccess Code :: END
複製代碼 8. 把某些特殊的IP地址的請求重定向到別的站點- ErrorDocument 403http://www.youdomain.com. t" I+ Z. W" e. a
- Order deny,allow
6 b! E+ \2 i9 v5 C1 L - Deny from all
% j5 e2 T# |! }( L# L9 S3 _- o1 ~ - Allow from 124.34.48.165
' q: F) |0 H$ f - Allow from 102.54.68.123
複製代碼 9. 直接找開文件而不是下載– 通常,我們打開網上文件的時候總是會出現一個對話框問我們是下載還是直接打開,使用下面的設置就不會出現這個問題了,直接打開。- AddType application/octet-stream .pdf3 f# r, W9 `! Q- B6 k6 }
- AddType application/octet-stream .zip
: W. d$ ]& D0 Z5 j% [ - AddType application/octet-stream .mov
複製代碼 10. 修改文件類型– 下面的示例可以讓任何的文件都成為PHP那麼被服務器解釋。比如:myphp, cgi,phtml等。- ForceType application/x-httpd-php
# G: B) c3 D# e9 D: ]$ O - SetHandler application/x-httpd-php
複製代碼 11. 阻止存取.htaccess 文件- # secure htaccess file
3 ]0 f) Y9 n+ }5 s - order allow,deny
, a2 ^( i2 ]# m* i5 k - deny from all
複製代碼 12. 保護服務器上的文件被存取- # prevent access of a certain fileorder allow,deny: v' A1 b# H3 t- i0 F5 o1 i
- deny from all
複製代碼 13. 阻止目錄瀏覽- # disable directory brow, m% [- `$ f2 P9 q
- sing
5 T5 W2 p& a( I5 c - Options All -Indexes
複製代碼 14. 設置默認主頁- # serve alternate default index page
; \4 _, Z% Z1 d+ C2 F6 B$ k5 O - DirectoryIndex about.html
複製代碼 15. 口令認證– 你可以創建一個文件用於認證。下面是一個示例:- # to protect a file
" K1 _: ^. C, ], m/ F - AuthType Basic
7 X- l- _; @5 f, N. Z+ L - AuthName 「Prompt」
' I' i, s- r( F/ ?' O) ]+ J - AuthUserFile /home/path/.htpasswd
- h6 R: q+ Z/ C- T- r - Require valid-user* D2 J9 U$ z6 y& A
- # password-protect a directory9 C8 ?! i% Y7 s) _
- resides
5 _. D- u: U) W( g& z5 }. k - AuthType basic
/ r* P" N7 p/ y$ p - AuthName 「This directory is protected」' H1 O( d5 N. S* e% L& n/ O
- AuthUserFile /home/path/.htpasswd; g# Z; f. ~; i9 d$ W7 j" X
- AuthGroupFile /dev/null
# _9 r& F9 p* N6 w- c/ q - Require valid-user
複製代碼 16. 把老的域名轉像新的域名- # redirect from old domain to new domain9 H( U y7 J1 C2 W" K
- RewriteEngine On
% _) Z4 p1 s& g- G, } - RewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]
複製代碼17.防盜鏈 圖片的盜鏈可能是很多站長最為頭痛的事情,自己的圖片被人白白拿去不說,還會免費佔用了自己網站的資源,使用htaccess文件同樣可以實現防盜鏈的功能。代碼如下: - RewriteEngine On
" v- {/ k8 K/ _0 u( K1 W* Q+ P - RewriteCond %{HTTP_REFERER} !^http://domain.com/.*$ [NC]3 t) k+ G' a3 S' u9 J) T/ T7 r$ i
- RewriteCond %{HTTP_REFERER} !^http://domain.com$ [NC]% h4 K2 J* P, J$ e* u- L0 u0 B
- RewriteCond %{HTTP_REFERER} !^http://www.domain.com/.*$ [NC]
1 H1 T8 f' i& f3 f$ N, o T7 o$ F - RewriteCond %{HTTP_REFERER} !^http://www.domain.com$ [NC]
: E7 I9 d2 a# s8 H9 H8 I# L, [3 Y - RewriteRule .*\.(gif|jpg|jpeg|png|bmp|swf|mp3|wav|zip|rar)$ http://www.domain.com/404.html [R,NC]
複製代碼這段代碼會判斷請求的referer,如果鏈接不是從本站點擊過來的,默認都會跳轉到一個404頁面。在RewriteRule中指定了要防盜鏈的文件類型。 18.防止垃圾評論 例用htaccess同樣可以防止一部分來源不明的垃圾評論: - RewriteEngine On
# K/ a% E! J. x3 f h0 b - RewriteCond %{REQUEST_METHOD} POST
% l" b. X# t* A% [7 L - RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
, t0 [. g* J# M9 Y1 r1 L' H$ T3 h4 x - RewriteCond %{HTTP_REFERER} !.*domain.com.* [OR]
4 n- _- { s) G; m - RewriteCond %{HTTP_USER_AGENT} ^$
/ q" x; r& T" S! ?2 \# } - RewriteRule (.*) ^http://domain.com/$ [R=301,L]
複製代碼這段代碼,判斷一個POST請求是否是由瀏覽器發出的(判斷HTTP_USER_AGENT是否為空),並且Refer是否本站的,只要其中任意一個條件不滿足,就將請求自動跳轉到首頁。 注意,這段代碼只適用於Wordpress,其實的框架可以根據其具體情況把wp-comments-post修改成對應的URL。 19.只允許自己訪問Wordpress的後台 如果你有一個固定的IP,那麼你完全可以在htaccess中設定只有自己能訪問Wordpress的後台。在wp-admin目錄下建立一個新的.htaccess文件,裡面寫入如下代碼: - AuthUserFile /dev/null
/ {* C- F' C, m: K: l" x: g - AuthGroupFile /dev/null. U k/ W8 A6 g8 i9 i' I
- AuthType Basic
" v+ {0 J& b9 F2 n$ a T9 t - <LIMIT GET>) [' |4 i4 z) w1 a% N2 X
- order deny,allow% C2 \8 ?0 w5 z0 ?
- deny from all
/ R3 g4 C& d I- w -
6 E/ @% I) A8 V: R- m - # xx.xx.xx.xx為您的IP,您也以設定多個IP。
2 [$ z0 ^4 j4 i0 M: q - allow from xx.xx.xx.xx( [- E3 b. Q$ X( d1 o
- allow from xx.xx.xx.xxx
4 i D, l- h8 j& I# O, ^ - </LIMIT>
複製代碼註:對於這段代碼,一定是在wp-admin文件夾下建立新的htaccess,很多坑爹的文章都沒有告訴你這一點,直接添加到網站根目錄下的那個htacess下的話……您要是想要自己的整個網站都只能自己訪問的話,不妨試試。 20.阻止某些IP訪問自己的網站(同第三條類似) 如果有些垃圾網站的Robot總是不停的抓取你網站的數據,你可以在htaccess中屏蔽掉這些IP。 - <Limit GET POST>
5 z- T# n4 D" L- R: q7 N& d+ c4 Z& @ - order allow,deny
! A L- P9 r; w N. c - deny from xx.xx.xx.xx* M; K, K, _+ K$ S( Y! l" \; g# I
- allow from all
9 ]) v& V% H% `6 ^' T* b - </Limit>
複製代碼類似的,更換一下deny和allow,可以實現只允許某些特定IP訪問自己的網站,當然如果您真的想要這麼做的話。 21.判斷瀏覽器 瀏覽器兼容可以說是前端工程師最為心痛的事。與其在css中寫各種hack,不如在htacess中判斷瀏覽器,直接指向不同的css文件。 - RewriteCond %{REQUEST_URI} index\.css*
! A8 \, N# u8 i3 X" W - RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0$"
2 {2 f9 B* I. t( e+ y3 T2 ^ - RewriteRule ^(.*)$ http://domain.com/firefox.css
複製代碼類似的,利用htacess判斷訪問者是否持有的是移動設備也很容易。 - RewriteEngine on
! p& V" s* q9 v/ z - RewriteCond %{HTTP_USER_AGENT} "Windows CE" [NC,OR]
& A/ |: Y1 {3 E ~ - RewriteCond %{HTTP_USER_AGENT} "NetFront" [NC,OR]+ r; |: m( h o
- RewriteCond %{HTTP_USER_AGENT} "Palm OS" [NC,OR]" h/ {3 r0 [; s
- RewriteCond %{HTTP_USER_AGENT} "Blazer" [NC,OR]
0 L' j& k; R4 Q3 F - RewriteCond %{HTTP_USER_AGENT} "Elaine" [NC,OR]
. B" \; J* O+ W: `7 {& M - RewriteCond %{HTTP_USER_AGENT} "^WAP.*$" [NC,OR]
# m1 }- W7 n8 @7 D - RewriteCond %{HTTP_USER_AGENT} "Plucker" [NC,OR]/ V5 Q& b7 `: ~) v+ e) g' I
- RewriteCond %{HTTP_USER_AGENT} "vodafone" [NC,OR]
0 ]# I1 X& X' \' s - RewriteCond %{HTTP_USER_AGENT} "iPhone" [NC,OR]- ~5 c$ I, t" Y. T
- RewriteCond %{HTTP_USER_AGENT} "nokia" [NC,OR]
" w# ?4 e# F# x - RewriteCond %{HTTP_USER_AGENT} "symbian" [NC,OR]! ~/ k) |* y2 T% d4 F
- RewriteCond %{HTTP_USER_AGENT} "Opera Mini" [NC,OR]
( ^ ? X5 u/ N2 m7 H - RewriteCond %{HTTP_USER_AGENT} "BlackBerry" [NC,OR]
4 m( E; V- X2 ^3 I% ]* ^0 A9 w - RewriteCond %{HTTP_USER_AGENT} "j2me" [NC,OR]! o, r9 {7 ^0 V8 W$ S, {8 v1 Z
- RewriteCond %{HTTP_USER_AGENT} "midp" [NC,OR]9 J# v+ n9 ]( g& ~4 I) F+ R
- RewriteCond %{HTTP_USER_AGENT} "htc" [NC,OR]' x& s' [# k1 c- }# R1 c9 Z! k
- RewriteCond %{HTTP_USER_AGENT} "java" [NC,OR]! t; W% `1 t7 k' F g
- RewriteCond %{HTTP_USER_AGENT} "sony" [NC,OR]3 h% U* _- a4 a# K& [
- RewriteCond %{HTTP_USER_AGENT} "android" [NC,OR]+ p1 \' ^! q% Y' B. d9 C. o+ Q9 a
- RewriteCond %{HTTP_USER_AGENT} "AvantGo" [NC]1 |- x3 g: w& u
- RewriteRule (.*) http://mobi.domain.com/ [R,L]
複製代碼還有通用的瀏覽器的USER_AGENT方式。有興趣的朋友可以去搜索一下。 22.禁止訪問特定的文件類型或文件 有些特定的文件、或某些文件,我們可能不想讓用戶訪問到,可以用如下代碼: - <Files secretfile.jpg>6 i) f3 l3 }# w( [6 [8 m
- order allow,deny
9 o' n2 U3 ^! ~* V - deny from all
+ g( s& h* g1 W6 A! s. H1 D; s - </Files>+ S) A c4 M6 h7 L" O' M% Y1 g
-
1 f( ^% h! ^2 r+ z( g2 x: g! F2 Z# e - <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">: l) K- u7 Y3 q8 d2 ~+ i9 E
- Order Allow,Deny4 S- A3 V4 o$ R% N' ?3 e5 F
- Deny from all9 G3 @. l2 e3 S) I
- </FilesMatch>
複製代碼23.判斷瀏覽器的語言 想要根據瀏覽器的語言設定,跳轉到不同的頁面,可以用如下代碼: - RewriteCond %{HTTP:Accept-Language} ^zh-cn.*$ [NC]
& r. A2 }1 w q7 s - RewriteRule ^/?$ index_cn.htm [R=301,L]
複製代碼總結 就說到這裡了,其實htaccess的用途還有很多很多,大家可以根據上面的例子自己去挖掘htaccess的新的用途。不過注意修改htaccess時一定要小心,因為一但寫錯,很可能導致整個網站都無法訪問。 / W: w3 M8 A/ Y) _; d7 h
6 L: k) g$ v- r) h0 F/ i
|