域名跳轉
有些時候,我們會想把domain.com的域名全部跳轉到www.domain.com下。這個時候htaccess就可以派上用場了。在.htaccess文件中添加類似下面的代碼:(下面這段代碼在網站更換域名時,也同樣使用)
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
類似的還可以用htacess也可以用來更換URL的目錄結構,這個在Category名字被更換時特別有用:
RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
注:R后面的301表示此跳轉為永久跳轉,也可以根據實際情況該成臨時跳轉(302)。
防盜鏈
圖片的盜鏈可能是很多站長最為頭痛的事情,自己的圖片被人白白拿去不說,還會免費占用了自己網站的資源,使用htaccess文件同樣可以實現防盜鏈的功能。代碼如下:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://domain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://domain.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com$ [NC]
RewriteRule .*.(gif|jpg|jpeg|png|bmp|swf|mp3|wav|zip|rar)$ http://www.domain.com/404.html [R,NC]
這段代碼會判斷請求的referer,如果鏈接不是從本站點擊過來的,默認都會跳轉到一個404頁面。在RewriteRule中指定了要防盜鏈的文件類型。
防止垃圾評論
例用htaccess同樣可以防止一部分來源不明的垃圾評論:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.*domain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://domain.com/$ [R=301,L]
這段代碼,判斷一個POST請求是否是由瀏覽器發出的(判斷HTTP_USER_AGENT是否為空),并且Refer是否本站的,只要其中任意一個條件不滿足,就將請求自動跳轉到首頁。
注意,這段代碼只適用于Wordpress,其實的框架可以根據其具體情況把wp-comments-post修改成對應的URL。
只允許自己訪問Wordpress的后臺
如果你有一個固定的IP,那么你完全可以在htaccess中設定只有自己能訪問Wordpress的后臺。在wp-admin目錄下建立一個新的.htaccess文件,里面寫入如下代碼:
AuthUserFile /dev/null AuthGroupFile /dev/null AuthType Basic <LIMIT GET> order deny,allow deny from all # xx.xx.xx.xx為您的IP,您也以設定多個IP。 allow from xx.xx.xx.xx allow from xx.xx.xx.xxx </LIMIT>
注:對于這段代碼,一定是在wp-admin文件夾下建立新的htaccess,很多坑爹的文章都沒有告訴你這一點,直接添加到網站根目錄下的那個htacess下的話……您要是想要自己的整個網站都只能自己訪問的話,不妨試試。
阻止某些IP訪問自己的網站
如果有些垃圾網站的Robot總是不停的抓取你網站的數據,你可以在htaccess中屏蔽掉這些IP。
<Limit GET POST> order allow,deny deny from xx.xx.xx.xx allow from all </Limit>
類似的,更換一下deny和allow,可以實現只允許某些特定IP訪問自己的網站,當然如果您真的想要這么做的話。
判斷瀏覽器
瀏覽器兼容可以說是前端工程師最為心痛的事。與其在css中寫各種hack,不如在htacess中判斷瀏覽器,直接指向不同的css文件。
RewriteCond %{REQUEST_URI} index.css*
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0$"
RewriteRule ^(.*)$ http://domain.com/firefox.css
類似的,利用htacess判斷訪問者是否持有的是移動設備也很容易。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Windows CE" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "NetFront" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Palm OS" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Blazer" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Elaine" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^WAP.*$" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Plucker" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "vodafone" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "iPhone" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "nokia" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera Mini" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "BlackBerry" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "j2me" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "midp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "htc" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "java" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "android" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "AvantGo" [NC]
RewriteRule (.*) http://mobi.domain.com/ [R,L]
因為有點多,為了方便閱讀,還有通用的瀏覽器的USER_AGENT放在了文章的最后。有興趣的讀者去可以去看看吧。
禁止訪問特定的文件類型或文件
有些特定的文件、或某些文件,我們可能不想讓用戶訪問到,可以用如下代碼:
<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>
判斷瀏覽器的語言
想要根據瀏覽器的語言設定,跳轉到不同的頁面,可以用如下代碼:
RewriteCond %{HTTP:Accept-Language} ^zh-cn.*$ [NC]
RewriteRule ^/?$ index_cn.htm [R=301,L]
網上尋找整理的資料 其實不止適合wordpress站,其他只要支持htaccess的服務器上的網站都可以用。





