.htaccess重寫、安全防護、文件訪問權限


今天在《外刊IT評論》上看見了關於.htaccess的使用總結,覺得很不錯的,因為wp博客還有其他的php的web服務站點好多都是用.htaccess來管理比如效率以及安全的問題,有必要來學習一下。

1.時區設置

有些時候,當你在PHP里使用date或mktime函數時,由於時區的不同,它會顯示出一些很奇怪的信息。下面是解決這個問題的方法之一。就是設置你的服務器的時區。你可以在這里找到所有支持的時區的清單。

  1. SetEnv?TZ?Australia/Melbourne

2. 搜索引擎友好的301永久轉向方法

為什么這是搜索引擎友好的呢?因為現在很多現代的搜索引擎都有能根據檢查301永久轉向來更新它現有的記錄的功能。

  1. Redirect?301?http://www.aqee.net/home?http://www.aqee.net/

3. 屏蔽下載對話框

通常,當你下載東西的時候,你會看到一個對話框詢問你是保持這個文件還是直接打開它。如果你不想看到這個東西,你可以把下面的一段代碼放到你的.htaccess文件里。

  1. AddType?application/octet-stream?.pdf
  2. AddType?application/octet-stream?.zip
  3. AddType?application/octet-stream?.mov

4. 省去www前綴

SEO的一個原則是,確保你的網站只有一個URL。因此,你需要把所有的通過www的訪問轉向的非www,或者反這來。

  1. RewriteEngine?On
  2. RewriteBase?/
  3. RewriteCond?%{HTTP_HOST}?^www.aqee.net?[NC]
  4. RewriteRule?^(.*)$?http://aqee.net/$1?[L,R=301]

5. 個性化Error頁面

對每個錯誤代碼定制自己個性化的錯誤頁面。

  1. ErrorDocument?401?/error/401.php
  2. ErrorDocument?403?/error/403.php
  3. ErrorDocument?404?/error/404.php
  4. ErrorDocument?500?/error/500.php

6. 壓縮文件

通過壓縮你的文件體積來優化網站的訪問速度。

  1. #?壓縮?text,?html,?javascript,?css,?xml:
  2. AddOutputFilterByType?DEFLATE?text/plain
  3. AddOutputFilterByType?DEFLATE?text/html
  4. AddOutputFilterByType?DEFLATE?text/xml
  5. AddOutputFilterByType?DEFLATE?text/css
  6. AddOutputFilterByType?DEFLATE?application/xml
  7. AddOutputFilterByType?DEFLATE?application/xhtml+xml
  8. AddOutputFilterByType?DEFLATE?application/rss+xml
  9. AddOutputFilterByType?DEFLATE?application/javascript
  10. AddOutputFilterByType?DEFLATE?application/x-javascript

7. 緩存文件

緩存文件是另外一個提高你的網站訪問速度的好方法。

  1. <FilesMatch?“.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
  2. Header?set?Cache-Control?“max-age=2592000″
  3. </FilesMatch>

8. 對某些文件類型禁止使用緩存

而另一方面,你也可以定制對某些文件類型禁止使用緩存。

  1. #?顯式的規定對腳本和其它動態文件禁止使用緩存
  2. <FilesMatch?“.(pl|php|cgi|spl|scgi|fcgi)$”>
  3. Header?unset?Cache-Control
  4. </FilesMatch>

安全問題

下面的htaccess代碼能夠提高你的web服務器的安全水平。圖片鏈接盜用保護非常有用,它能防止其他人偷盜使用你的服務器上的圖片資源。

1. 通過.htaccess放盜鏈

痛恨那些偷盜鏈接你的web服務器上的圖片資源而耗盡了你的帶寬的行為嗎?試試這個,你可以防止這種事情的發生。

  1. RewriteBase?/
  2. RewriteCond?%{HTTP_REFERER}?!^$
  3. RewriteCond?%{HTTP_REFERER}?!^http://(www.)?aqee.net/.*$?[NC]
  4. RewriteRule?.(gif|jpg|swf|flv|png)$?/feed/?[R=302,L]

2. 防黑客

如果你想提高網站的安全等級,你可以去掉下面的幾行代碼,這樣可以防止一些常見惡意URL匹配的黑客攻擊技術。

  1. RewriteEngine?On
  2. #?proc/self/environ??沒門!
  3. RewriteCond?%{QUERY_STRING}?proc/self/environ?[OR]
  4. #?阻止腳本企圖通過URL修改mosConfig值
  5. RewriteCond?%{QUERY_STRING}?mosConfig_[a-zA-Z_]{1,21}(=|\%3D)?[OR]
  6. #?阻止腳本通過URL傳遞的base64_encode垃圾信息
  7. RewriteCond?%{QUERY_STRING}?base64_encode.*(.*)?[OR]
  8. #?阻止在URL含有<script>標記的腳本
  9. RewriteCond?%{QUERY_STRING}?(<|%3C).*script.*(>|%3E)?[NC,OR]
  10. #?阻止企圖通過URL設置PHP的GLOBALS變量的腳本
  11. RewriteCond?%{QUERY_STRING}?GLOBALS(=|[|\%[0-9A-Z]{0,2})?[OR]
  12. #?阻止企圖通過URL設置PHP的_REQUEST變量的腳本
  13. RewriteCond?%{QUERY_STRING}?_REQUEST(=|[|\%[0-9A-Z]{0,2})
  14. #?把所有被阻止的請求轉向到403禁止提示頁面!
  15. RewriteRule?^(.*)$?index.php?[F,L]

3. 阻止訪問你的 .htaccess 文件

下面的代碼可以阻止別人訪問你的.htaccess文件。同樣,你也可以設定阻止多種文件類型。

  1. #?保護你的?htaccess?文件
  2. <Files?.htaccess>
  3. order?allow,deny
  4. deny?from?all
  5. </Files>
  6. #?阻止查看指定的文件
  7. <Files?secretfile.jpg>
  8. order?allow,deny
  9. deny?from?all
  10. </Files>
  11. #?多種文件類型
  12. <FilesMatch?“.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
  13. Order?Allow,Deny
  14. Deny?from?all
  15. </FilesMatch>

4. 重命名 htaccess 文件

你可以通過重命名htaccess文件來對其進行保護。

  1. AccessFileName?htacc.ess

5. 禁止目錄瀏覽

禁止服務器對外顯示目錄結構,反之亦然。

  1. #?禁止目錄瀏覽
  2. Options?All?-Indexes
  3. #?開放目錄瀏覽
  4. Options?All?+Indexes

6. 改變缺省的Index頁面

你可以把缺省的 index.html, index.php 或 index.htm 改成其它頁面。

  1. DirectoryIndex?business.html

7. 通過引用信息來阻止某些不歡迎的瀏覽者

  1. #?阻止來自某網站的用戶
  2. <IfModule?mod_rewrite.c>
  3. RewriteEngine?on
  4. RewriteCond?%{HTTP_REFERER}?scumbag.com?[NC,OR]
  5. RewriteCond?%{HTTP_REFERER}?wormhole.com?[NC,OR]
  6. RewriteRule?.*?-?[F]
  7. </ifModule>

8. 通過判斷瀏覽器頭信息來阻止某些請求

這個方法可以通過阻止某些機器人或蜘蛛爬蟲抓取你的網站來節省你的帶寬流量。

  1. #?阻止來自某些特定網站的用戶
  2. <IfModule?mod_rewrite.c>
  3. SetEnvIfNoCase?^User-Agent$?.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider
    |leacher|collector|grabber|webpictures)?HTTP_SAFE_BADBOT
  4. SetEnvIfNoCase?^User-Agent$?.*(libwww-perl|aesop_com_spiderman)?HTTP_SAFE_BADBOT
  5. Deny?from?env=HTTP_SAFE_BADBOT
  6. </ifModule>

9. 禁止腳本執行,加強你的目錄安全

    1. #?禁止某些目錄里的腳本執行權限
    2. AddHandler?cgi-script?.php?.pl?.py?.jsp?.asp?.htm?.shtml?.sh?.cgi
    3. Options?-ExecCGI


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM