18個有用的 .htaccess 檔案提示
.htaccess 是 Web 服務器 Apache 中特有的一個設定檔,操控著伺服器上的許多行為,我們可以利用它來做許多事情,例如:設定存取權限,網址重新導向,等等。本文向大家展示18條 .htaccess 檔案的提示,歡迎各位收藏備用。 溫馨提示:在編輯 .htaccess 檔案時,切記一定要先做好備份,因為這個檔案相當重要,編輯錯了可能會出現不可想像的後果! 1.去除部落格網址中的 WWW. 據說這樣做有利於 SEO。將下面的代碼加入到 .htaccess 檔案中,結果會把所有帶 www. 的網址重新導向到不帶 www. 的網址。需要將 ijinfa.cn 改成您的網域名稱哦! RewriteEngine OnRewriteCond %{HTTP_HOST} !^ijinfa.cn$ [NC]RewriteRule ^(.*)$ http://ijinfa.cn/$1 [L,R=301] 2.強制使用WWW.格式的網址 將 www.ijinfa.cn 改成您的網域名稱哦! RewriteEngine OnRewriteCond %{HTTP_HOST} ^ijinfa.cn [NC]RewriteRule ^(.*)$ http://www.ijinfa.cn/$1 [L,R=301] 3.設定圖片防盜鏈 RewriteEngine On#Replace ?mysite\.com/ with your blog urlRewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]RewriteCond %{HTTP_REFERER} !^$#Replace /images/nohotlink.jpg with your "don't hotlink" image urlRewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] 4.重新導向 WordPress 部落格中的所有 feeds 到 feedburner 將 http://feedburner.com/yourfeed/ 換成您的 feedburner 識別碼。 <IfModule mod_alias.c> RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/</IfModule> 5.自訂錯誤頁面 需要您自己建立一些 html 檔案,訪問者訪問不存在的頁面時就會顯示這些 html 頁面。 ErrorDocument 400 /errors/badrequest.htmlErrorDocument 401 /errors/authreqd.htmlErrorDocument 403 /errors/forbid.htmlErrorDocument 404 /errors/notfound.htmlErrorDocument 500 /errors/serverr.html 6.強制下載特定的檔案 如果您的網站提供 mp3s, eps 或 xls 此類檔案的下載,要是不想讓瀏覽器來決定是否下載,利用如下代碼可強制下載。 <Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment</Files><Files *.eps> ForceType application/octet-stream Header set Content-Disposition attachment</Files> 7.PHP 錯誤記錄 在您的伺服器上建立一個 php_error.log 檔案,再將以下代碼放入 .htaccess 檔案中,記得修改第七行中的檔案路徑。這是一條很有用的函數。 # display no errs to userphp_flag display_startup_errors offphp_flag display_errors offphp_flag html_errors off# log to filephp_flag log_errors onphp_value error_log /location/to/php_error.log 8.從網址中去除檔案的副檔名 副檔名對網頁開發人員很有用,但對訪問的人沒用,您也不希望他們看到的,使用下面的方法將它們去掉。下面是去掉 html 副檔名的方法,可以改成 php, htm, asp 等。 RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME}\.<span style="color: #ff0000;">html</span> -fRewriteRule ^(.*)$ $1.<span style="color: #ff0000;">html</span># Replace html with your file extension, eg: php, htm, asp 9.禁止自動列出系統檔案目錄 如果您網站某個檔案目錄不存在 index 檔案,伺服器會自動列出目前的目錄中的所有檔案,通常您並不希望讓別人看到,使用下面這句代碼,可以禁止目錄被列出。 Options -Indexes 10.壓縮靜態檔案,加速頁面下載 這樣會在一定程度上減少伺服器頻寬消耗,加快讀者訪問速度。 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascriptBrowserMatch ^Mozilla/4 gzip-only-text/htmlBrowserMatch ^Mozilla/4.0[678] no-gzipBrowserMatch bMSIE !no-gzip !gzip-only-text/html 11.給檔案自動添加utf-8編碼 對於某些特定的檔案,如 html, htm,css 或 js 等,有時可能會忘記在頁面中加上一條 <meta http-equiv=”Content-Type”> 編碼標籤,為防止出現編碼問題,可讓頁面自動產生這樣的標籤。 <FilesMatch "\.(htm|html|css|js)$">ForceType 'text/html; charset=UTF-8'</FilesMatch> 12.去除 WordPress 網址中的 /category/ 目錄名稱 預設情況下, WordPress 分類目錄的永久連結會顯示如下: http://www.catswhocode.com/blog/category/wordpress 其中的目錄名 /category/ 毫無用處,可以去掉,只需在 .htaccess 檔案中加上下面這一行(其中http://www.yourblog.com/ 是您的網域名稱): RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L] 將修改後的檔案儲存,分類目錄的連結形式就會變成如下: http://www.yourblog.com/blog/wordpress 13.使用瀏覽器緩衝 一個有效加快部落格速度的方法就是,強制瀏覽器緩衝。在 .htaccess 檔案中添加以下語句: FileETag MTime Size<ifmodule mod_expires.c> <filesmatch "\.(jpg|gif|png|css|js)$"> ExpiresActive on ExpiresDefault "access plus 1 year" </filesmatch></ifmodule> 14.將帶發表日期和日誌名稱的永久連結重新導向到 /%postname%/ 格式這個 /%postname%/ 就是日誌名稱,也就是使用日誌名稱作為永久連結。首先登入 WordPress 後台,到設定→ 永久連結,在自訂永久連結這一項中填上/%postname%/,之後您的部落格永久連結會變成如下這樣: http://www.yourblog.com/name-of-the-post 接著下來重要的一步,利用301重新導向將所有舊的連結全部指向上面所建新連結。開啟 WordPress 根目錄下的 .htaccess 檔案,加入以下一行語句: RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://www.domain.com/$4 搞定了! 15.拒絕非人為的發布評論 原理是禁止(機器人)非人為訪問 wp-comments-post.php 檔案, 可有效防止大量的垃圾評論。將第四行的 yourblog.com 改成您的網址即可。 RewriteEngine OnRewriteCond %{REQUEST_METHOD} POSTRewriteCond %{REQUEST_URI} .wp-comments-post\.php*RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]RewriteCond %{HTTP_USER_AGENT} ^$RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] 16.將訪問者重新導向到一個維護模式頁面 在升級部落格或者修改主題的時候,讓訪客看到這些變化(特別是代碼錯誤),總不是件好事,甚至可能引發安全問題,這時,就有必要將所有訪問者引向一個指定的維護模式頁面。下面的文法中使用302重新導向,將讀者引導到一個叫做“maintenance.html”的頁面,第三行中是您自己部落格的IP地址。 RewriteEngine onRewriteCond %{REQUEST_URI} !/maintenance.html$RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123RewriteRule $ /maintenance.html [R=302,L] 17.僅允許您自己的 IP 訪問 wp-admin 目錄 除非是多作者部落格,如果您使用的是靜態IP,可以設定只有您自己可以訪問 wp-admin 目錄,使用“allow from xx.xx.xxx.xx“ 這樣的格式,多個靜態IP各佔一行。 AuthUserFile /dev/nullAuthGroupFile /dev/nullAuthName "Example Access Control"AuthType Basic<LIMIT GET>order allow, denydeny from allallow from xx.xx.xx.xx</LIMIT> 18.將特定的 IP 列入黑名單 使用“deny from xxx.xx.xxx.xxx”這樣的格式,不同的 IP 各佔五行,這種方法可用於防止垃圾評論或某些您想禁止訪問的訪客。 <Limit GET POST>order allow,denydeny from 222.69.116.166allow from all</Limit>