既然是技術(shù)人員,那么實(shí)際的代碼是必不可少的。鑒于目前很多的站點(diǎn)大多數(shù)使用的都是以PHP+MYSQL為主流的網(wǎng)站程序,那么網(wǎng)站的配置文件是必須受到我們格外重視的。本文為筆者收集和整理了幾乎所有.htaccess文件的配置使用方法及其作用,收集來(lái)源于互聯(lián)網(wǎng)。
【301永久重定向】
使用301永久重定向避免www與根域名的權(quán)重是非常好的習(xí)慣和方法,但是從http頭來(lái)進(jìn)行設(shè)置有亮點(diǎn)不好,一是增加網(wǎng)頁(yè)的http響應(yīng)次數(shù),延長(zhǎng) 頁(yè)面的響應(yīng)時(shí)間,二是比較容易設(shè)置成302臨時(shí)重定向。所以筆者建議使用.htaccess文件來(lái)進(jìn)行網(wǎng)站的301永久重定向。
為什么這是搜索引擎友好的呢?因?yàn)楝F(xiàn)在很多現(xiàn)代的搜索引擎都有能根據(jù)檢查301永久轉(zhuǎn)向來(lái)更新它現(xiàn)有的記錄的功能。
代碼如下(以筆者的博客www.AAA.com為例):
RewriteEngine on
RewriteCond %{http_host} ^AAA.com [NC]
RewriteRule ^(.*)$ http://www.AAA.com/$1 [L,R=301]
這是使訪問(wèn)AAA.com/的時(shí)候就會(huì)自動(dòng)轉(zhuǎn)到www.AAA.com,同樣的,我們也可以反向設(shè)置,即訪問(wèn)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
【壓縮文件】
通過(guò)壓縮你網(wǎng)站上的靜態(tài)資源及其他文件的體積來(lái)優(yōu)化網(wǎng)站的訪問(wèn)速度,它可以通過(guò)壓縮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è)面訪問(wèn)速率,同樣它也是Yahoo的YSLow評(píng)測(cè)標(biāo)準(zhǔn)的重要項(xiàng)目之一。
代碼如下:
ExpiresActive on //開(kāi)啟緩存
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ì)某些文件類(lèi)型禁止使用緩存】
網(wǎng)站有很多動(dòng)態(tài)文件是不可以讓瀏覽器緩存的,這樣,我們就需要限定禁止緩存的文件。
代碼如下:
Header unset Cache-Control
【允許訪問(wèn)與阻止IP訪問(wèn)】
你可以使用以下命令封禁一個(gè)IP地址,對(duì)于醫(yī)療行業(yè)來(lái)說(shuō),惡意點(diǎn)擊的競(jìng)價(jià)推廣及商務(wù)通的代碼就可以使用這個(gè)來(lái)阻止競(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èn)網(wǎng)站。
代碼如下:
allow from 000.000.000.000
被允許的IP地址則為000.000.000.000,你可以象封禁IP地址一樣封禁整個(gè)網(wǎng)段。
如果你想阻止所有人訪問(wèn)該目錄,則可以這樣。
代碼如下:
deny from all
需要注意的是,不過(guò)這并不影響腳本程序使用這個(gè)目錄下的文檔,只是禁止用戶(hù)訪問(wèn)(或許會(huì)有人想到用它來(lái)只允許蜘蛛訪問(wèn)吧)。
【圖片防盜鏈】
下面的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í),你可以去掉下面的幾行代碼,這樣可以防止一些常見(jiàn)惡意URL匹配的黑客攻擊技術(shù)。對(duì)于醫(yī)療網(wǎng)站來(lái)說(shuō),競(jìng)爭(zhēng)對(duì)手攻擊商務(wù)通 的彈窗代碼導(dǎo)致一段時(shí)間內(nèi)爆發(fā)出成千上萬(wàn)的對(duì)話(huà)是非常難以防范和應(yīng)對(duì)的,所以我們可以使用.htaccess來(lái)保護(hù)我們的商務(wù)通。
代碼如下:
RewriteEngine On
# proc/self/environ? 沒(méi)門(mén)!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
# 阻止腳本企圖通過(guò)URL修改mosConfig值
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D)[OR]
# 阻止腳本通過(guò)URL傳遞的base64_encode垃圾信息
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# 阻止在URL含有