.htaccess重寫(xiě)、安全防護(hù)、文件訪(fǎng)問(wèn)權(quán)限
今天在《外刊IT評(píng)論》上看見(jiàn)了關(guān)于.htaccess的使用總結(jié),覺(jué)得很不錯(cuò)的,因?yàn)閣p博客還有其他的php的web服務(wù)站點(diǎn)好多都是用.htaccess來(lái)管理比如效率以及安全的問(wèn)題,有必要來(lái)學(xué)習(xí)一下。
1.時(shí)區(qū)設(shè)置
有些時(shí)候,當(dāng)你在PHP里使用date或mktime函數(shù)時(shí),由于時(shí)區(qū)的不同,它會(huì)顯示出一些很奇怪的信息。下面是解決這個(gè)問(wèn)題的方法之一。就是設(shè)置你的服務(wù)器的時(shí)區(qū)。你可以在這里找到所有支持的時(shí)區(qū)的清單。
- SetEnv TZ Australia/Melbourne
2. 搜索引擎友好的301永久轉(zhuǎn)向方法
為什么這是搜索引擎友好的呢?因?yàn)楝F(xiàn)在很多現(xiàn)代的搜索引擎都有能根據(jù)檢查301永久轉(zhuǎn)向來(lái)更新它現(xiàn)有的記錄的功能。
- Redirect 301 http://www.aqee.net/home http://www.aqee.net/
3. 屏蔽下載對(duì)話(huà)框
通常,當(dāng)你下載東西的時(shí)候,你會(huì)看到一個(gè)對(duì)話(huà)框詢(xún)問(wèn)你是保持這個(gè)文件還是直接打開(kāi)它。如果你不想看到這個(gè)東西,你可以把下面的一段代碼放到你的.htaccess文件里。
- AddType application/octet-stream .pdf
- AddType application/octet-stream .zip
- AddType application/octet-stream .mov
4. 省去www前綴
SEO的一個(gè)原則是,確保你的網(wǎng)站只有一個(gè)URL。因此,你需要把所有的通過(guò)www的訪(fǎng)問(wèn)轉(zhuǎn)向的非www,或者反這來(lái)。
- RewriteEngine On
- RewriteBase /
- RewriteCond %{HTTP_HOST} ^www.aqee.net [NC]
- RewriteRule ^(.*)$ http://aqee.net/$1 [L,R=301]
5. 個(gè)性化Error頁(yè)面
對(duì)每個(gè)錯(cuò)誤代碼定制自己個(gè)性化的錯(cuò)誤頁(yè)面。
- ErrorDocument 401 /error/401.php
- ErrorDocument 403 /error/403.php
- ErrorDocument 404 /error/404.php
- ErrorDocument 500 /error/500.php
6. 壓縮文件
通過(guò)壓縮你的文件體積來(lái)優(yōu)化網(wǎng)站的訪(fǎng)問(wèn)速度。
-
壓縮 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/javascript
- AddOutputFilterByType DEFLATE application/x-javascript
7. 緩存文件
緩存文件是另外一個(gè)提高你的網(wǎng)站訪(fǎng)問(wèn)速度的好方法。
- <FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
- Header set Cache-Control “max-age=2592000″
- </FilesMatch>
8. 對(duì)某些文件類(lèi)型禁止使用緩存
而另一方面,你也可以定制對(duì)某些文件類(lèi)型禁止使用緩存。
-
顯式的規(guī)定對(duì)腳本和其它動(dòng)態(tài)文件禁止使用緩存
- <FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>
- Header unset Cache-Control
- </FilesMatch>
安全問(wèn)題
下面的htaccess代碼能夠提高你的web服務(wù)器的安全水平。圖片鏈接盜用保護(hù)非常有用,它能防止其他人偷盜使用你的服務(wù)器上的圖片資源。
1. 通過(guò).htaccess放盜鏈
痛恨那些偷盜鏈接你的web服務(wù)器上的圖片資源而耗盡了你的帶寬的行為嗎?試試這個(gè),你可以防止這種事情的發(fā)生。
- RewriteBase /
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^http://(www.) aqee.net/.*$ [NC]
- RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
2. 防黑客
如果你想提高網(wǎng)站的安全等級(jí),你可以去掉下面的幾行代碼,這樣可以防止一些常見(jiàn)惡意URL匹配的黑客攻擊技術(shù)。
- 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含有<script>標(biāo)記的腳本
- RewriteCond %{QUERY_STRING} (<|%3C).script.(>|%3E) [NC,OR]
-
阻止企圖通過(guò)URL設(shè)置PHP的GLOBALS變量的腳本
- RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
-
阻止企圖通過(guò)URL設(shè)置PHP的_REQUEST變量的腳本
- RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
-
把所有被阻止的請(qǐng)求轉(zhuǎn)向到403禁止提示頁(yè)面!
- RewriteRule ^(.*)$ index.php [F,L]
3. 阻止訪(fǎng)問(wèn)你的 .htaccess 文件
下面的代碼可以阻止別人訪(fǎng)問(wèn)你的.htaccess文件。同樣,你也可以設(shè)定阻止多種文件類(lèi)型。
- 保護(hù)你的 htaccess 文件
- <Files .htaccess>
- order allow deny
- deny from all
- </Files>
- 阻止查看指定的文件
- <Files secretfile.jpg>
- order allow,deny
- deny from all
- </Files>
- 多種文件類(lèi)型
- <FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
- Order Allow,Deny
- Deny from all
- </FilesMatch>
4. 重命名 htaccess 文件
你可以通過(guò)重命名htaccess文件來(lái)對(duì)其進(jìn)行保護(hù)。
- AccessFileName htacc.ess
5. 禁止目錄瀏覽
禁止服務(wù)器對(duì)外顯示目錄結(jié)構(gòu),反之亦然。
- 禁止目錄瀏覽
- Options All -Indexes
-
開(kāi)放目錄瀏覽
- Options All +Indexes
6. 改變?nèi)笔〉腎ndex頁(yè)面
你可以把缺省的 index.html, index.php 或 index.htm 改成其它頁(yè)面。
- DirectoryIndex business.html
7. 通過(guò)引用信息來(lái)阻止某些不歡迎的瀏覽者
-
阻止來(lái)自某網(wǎng)站的用戶(hù)
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
- RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
- RewriteRule .* - [F]
- </ifModule>
8. 通過(guò)判斷瀏覽器頭信息來(lái)阻止某些請(qǐng)求
這個(gè)方法可以通過(guò)阻止某些機(jī)器人或蜘蛛爬蟲(chóng)抓取你的網(wǎng)站來(lái)節(jié)省你的帶寬流量。
- 阻止來(lái)自某些特定網(wǎng)站的用戶(hù)
- <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>
9. 禁止腳本執(zhí)行,加強(qiáng)你的目錄安全
- 禁止某些目錄里的腳本執(zhí)行權(quán)限
- AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
- Options -ExecCGI