寧小樂:善用.htaccess文件成為網(wǎng)站利器既然是技術(shù)人員,那么實(shí)際的代碼是必不可少的。鑒于目前很多的站點(diǎn)大多數(shù)使用的都是以PHP+MYSQL為主流的網(wǎng)站程序,那么網(wǎng)站的配置文件是必須受到我們格外重視的。本文為筆者收集和整理了幾乎所有.htaccess文件的配置使用方法及其作用,收集來源于互聯(lián)網(wǎng)。 【301永久重定向】 使用301永久重定向避免www與根域名的權(quán)重是非常好的習(xí)慣和方法,但是從http頭來進(jìn)行設(shè)置有亮點(diǎn)不好,一是增加網(wǎng)頁(yè)的http響應(yīng)次數(shù),延 長(zhǎng) 頁(yè)面的響應(yīng)時(shí)間,二是比較容易設(shè)置成302臨時(shí)重定向。所以筆者建議使用.htaccess文件來進(jìn)行網(wǎng)站的301永久重定向。 為什么這是搜索引擎友好的呢?因?yàn)楝F(xiàn)在很多現(xiàn)代的搜索引擎都有能根據(jù)檢查301永久轉(zhuǎn)向來更新它現(xiàn)有的記錄的功能。 代碼如下(以筆者的博客www.AAA.com為例): RewriteEngine on RewriteCond %{http_host} ^AAA.com [NC] RewriteRule ^(.*)$ http://www.AAA.com/$1 [L,R=301] 這是使訪問AAA.com/的時(shí)候就會(huì)自動(dòng)轉(zhuǎn)到www.AAA.com,同樣的,我們也可以反向設(shè)置,即訪問www.AAA.com的時(shí)候自動(dòng)轉(zhuǎn)向至AAA.com: RewriteEngine on RewriteCond %{http_host} ^ www.AAA.com [NC] RewriteRule ^(.*)$ http://AAA.com/$1 [L,R=301] 【自定義Error頁(yè)面】 部分主機(jī)僅能在后臺(tái)設(shè)置404錯(cuò)誤頁(yè)面,使用.htaccess文件可以對(duì)每個(gè)錯(cuò)誤代碼定制自己的錯(cuò)誤頁(yè)面。 代碼如下: ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php 【壓縮文件】 通過壓縮你網(wǎng)站上的靜態(tài)資源及其他文件的體積來優(yōu)化網(wǎng)站的訪問速度,它可以通過壓縮text, html, javascript, css, xml等文件。 代碼如下 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javacript AddOutputFilterByType DEFLATE application/x-javascript 【靜態(tài)資源瀏覽器緩存設(shè)置】 對(duì)于那些并不會(huì)經(jīng)常有變化更新的文件,設(shè)置靜態(tài)文件緩存是非常非常重要的,它可以極大的提高頁(yè)面訪問速率,同樣它也是Yahoo的YSLow評(píng)測(cè)標(biāo)準(zhǔn)的重要項(xiàng)目之一。 代碼如下: ExpiresActive on //開啟緩存 ExpiresByType text/css "access 1 month"http://css文件緩存1個(gè)月 ExpiresByType text/plain "access 2 days"http://純文本內(nèi)容緩存2天 ExpiresByType text/html "access 2 days"http://html文件緩存2天 ExpiresByType application/javascript "access 1 month"http://JS文件緩存1個(gè)月 ExpiresByType image/jpeg "access 1 month"http://jpeg圖片緩存1個(gè)月 ExpiresByType image/x-icon "access 1 month"http://icon緩存1個(gè)月 ExpiresByType image/gif "access 1 month"http://gif圖片緩存一個(gè)月 ExpiresByType image/png "access 1 month"http://png圖片緩存一個(gè)月 ExpiresByType image/ico "access 1 month"http://ico緩存1個(gè)月 ExpiresByType application/pdf "access 1 month"http://pdf文件緩存一個(gè)月 ExpiresByType application/x-shockwave-flash "access 1 month"http://flash緩存一個(gè)月 ExpiresDefault "access 1 month"http:// 默認(rèn)(未提及的可緩存文件)緩存1個(gè)月 【對(duì)某些文件類型禁止使用緩存】 網(wǎng)站有很多動(dòng)態(tài)文件是不可以讓瀏覽器緩存的,這樣,我們就需要限定禁止緩存的文件。 代碼如下: Header unset Cache-Control 【允許訪問與阻止IP訪問】 你可以使用以下命令封禁一個(gè)IP地址,對(duì)于醫(yī)療行業(yè)來說,惡意點(diǎn)擊的競(jìng)價(jià)推廣及商務(wù)通的代碼就可以使用這個(gè)來阻止競(jìng)爭(zhēng)對(duì)手了。 代碼如下: deny from 000.000.000.000 這里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的幾個(gè),則可以封禁整個(gè)網(wǎng)段的地址。如你輸入210.10.56.*,則將封禁210.10.56.0~210.10.56.255的所有IP地址。 你也可以使用以下命令允許一個(gè)IP地址訪問網(wǎng)站。 代碼如下: allow from 000.000.000.000 被允許的IP地址則為000.000.000.000,你可以象封禁IP地址一樣封禁整個(gè)網(wǎng)段。 如果你想阻止所有人訪問該目錄,則可以這樣。 代碼如下: deny from all 需要注意的是,不過這并不影響腳本程序使用這個(gè)目錄下的文檔,只是禁止用戶訪問(或許會(huì)有人想到用它來只允許蜘蛛訪問吧)。 【圖片防盜鏈】 下面的htaccess代碼能夠提高你的web服務(wù)器的安全水平。圖片鏈接盜用保護(hù)非常有用,它能防止其他人偷盜使用你的服務(wù)器上的圖片資源。 代碼如下: RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?aqee.net/.*$ [NC] RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L] 【防黑客進(jìn)攻漏洞】 如果你想提高網(wǎng)站的安全等級(jí),你可以去掉下面的幾行代碼,這樣可以防止一些常見惡意URL匹配的黑客攻擊技術(shù)。對(duì)于醫(yī)療網(wǎng)站來說,競(jìng)爭(zhēng)對(duì)手攻擊商務(wù) 通 的彈窗代碼導(dǎo)致一段時(shí)間內(nèi)爆發(fā)出成千上萬的對(duì)話是非常難以防范和應(yīng)對(duì)的,所以我們可以使用.htaccess來保護(hù)我們的商務(wù)通。 代碼如下: RewriteEngine On # proc/self/environ? 沒門! RewriteCond %{QUERY_STRING} proc/self/environ [OR] # 阻止腳本企圖通過URL修改mosConfig值 RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D)[OR] # 阻止腳本通過URL傳遞的base64_encode垃圾信息 RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR] # 阻止在URL含有<script>標(biāo)記的腳本 RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E)[NC,OR] # 阻止企圖通過URL設(shè)置PHP的GLOBALS變量的腳本 RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2})[OR] # 阻止企圖通過URL設(shè)置PHP的_REQUEST變量的腳本 RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2}) # 把所有被阻止的請(qǐng)求轉(zhuǎn)向到403禁止提示頁(yè)面! RewriteRule ^(.*)$ index.php [F,L] 【阻止所有人訪問你的網(wǎng)站文件】 下面的代碼可以阻止別人訪問你的.htaccess文件。同樣,你也可以設(shè)定阻止多種文件類型。 【保護(hù)你的htaccess 文件】 代碼如下: <Files .htaccess> order allow,deny deny from all </Files> 【阻止查看指定的文件】 <Files secretfile.jpg> order allow,deny deny from all </Files> 【阻止查看指定的多種文件類型】 <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch> 【重命名.htaccess 文件】 既然.htaccess如此重要,我們需要對(duì)它進(jìn)行保護(hù),修改它的文件名是保護(hù)它的方法之一。 代碼如下: AccessFileName htacc.ess 【通過引用信息來阻止某些不歡迎的瀏覽者】 代碼如下: 《IfModule mod_rewrite.c》 RewriteEngine on RewriteCond %{HTTP_REFERER} AAA.com [NC,OR] RewriteCond %{HTTP_REFERER} seowto.com [NC,OR] RewriteRule .* - [F] 8.</ifModule> 【通過判斷瀏覽器頭信息來阻止某些請(qǐng)求】 這個(gè)方法可以通過阻止某些機(jī)器人或蜘蛛爬蟲抓取你的網(wǎng)站來節(jié)省你的帶寬流量。特別是防采集的效果很好。 代碼如下: <IfModule mod_rewrite.c> SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider |leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT </ifModule> 【禁止腳本執(zhí)行,加強(qiáng)你的目錄安全】 AddHandler cgi-script.php .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI 【禁止目錄瀏覽】 禁止服務(wù)器對(duì)外顯示目錄結(jié)構(gòu),反之亦然。 【禁止目錄瀏覽】 代碼如下: Options All -Indexes # 開放目錄瀏覽 代碼如下: Options All +Indexes 【改變?nèi)笔〉腎ndex頁(yè)面】 代碼如下: 你可以把缺省的index.html,index.php 或index.htm 改成其它頁(yè)面。 DirectoryIndex business.html 本人寧小樂,歡迎醫(yī)療行業(yè)SEM人士共同探討!另轉(zhuǎn)載本文請(qǐng)注明出處(www.ningyufei.com)! |
|