.htaccess是什麼?.htaccess是在Apache HTTP Server這款服務器架設軟件下的一個對於系統目錄進行各種權限規則設置的一個文件,存在於Linux操作系統中。比較常見的是定義默認首頁名 稱,404頁面,301轉向,等等,還有更多的功能比如偽靜態,限製圖片外鏈,限制下載,密碼保護,去除頁面廣告等等,還有非常多的功能就不一一列舉。
  其實這些功能大多可以在cPanel控制面板來進行設置的(相當於是.htaccess的圖形化界面)。但對於高手來講,cPanel對於htaccess提供的功能還是太少了點,手工編輯才是王道。相對於國內的虛擬主機,絕大多數是沒有這個功能的
.htaccess是什么
目錄規則
一般我們將.htaccess文件放置在網站的根目錄,控制所在目錄及所有子目錄,而如果放置在子目錄中,會受上級目錄中.htaccess文件影響,是不起任何作用的。

舉幾個例子,以下部分引用維基百科。

自定義錯誤頁面(直接拷貝即可)

ErrorDocument 404 /error-pages/not-found.html
ErrorDocument 503 /error-pages/service-unavailable.html

————————————————————————-
IP禁止

Order allow,deny
Deny from 123.45.67.8
Deny from 123.123.7
Allow from all

上面能禁止IP地址在123.45.67.8以及IP地址開頭為123.123.7的任何人。例如123.123.74.42 就不能得到訪問。
————————————————————————-
變更默認首頁

DirectoryIndex homepage.html

————————————————————————-
去除頁面廣告(不一定適用所有免費空間)

LayoutIgnoreURI *.php
LayoutIgnoreURI *.cgi
LayoutIgnoreURI *.htm
LayoutIgnoreURI *.html
LayoutIgnoreURI *.txt

————————————————————————-
頁面跳轉

Redirect page1.html page2.html

如果某人訪問 http://www.example.com/page1.html,他將被跳轉到(帶有HTTP狀態代碼302)的http://www.example.com/page2.html
————————————————————————-
服務器內置SSI

AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes

————————————————————————-
防止圖片熱鏈
後面的 .htaccess規則使用了mod rewrite。
特別域名

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?baddomain1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?baddomain2\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?baddomain3\.com [NC]
RewriteRule \.(gif|jpg)$ http://www.example.com/hotlink.gif [R,L]

非特別域名

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.example.com/hotlink.gif [R,L]

除非 example.com有這個圖片,瀏覽器才能看到hotlink.gif.
注意:Hotlink熱鏈保護使用 .htaccess 依賴客戶端在http GET請求中發送正確的」提交」值。像嘗試使用Windows Media Player發送空白的提交到.htaccess 來保護電影檔案是無效的。

禁止.htaccess文件被查看
在.htaccess文件中加入如下代碼就可以禁止別人訪問你的.htaccess文件:

<Files .htaccess>
order allow,deny
deny from all
</Files>

這個網上的大部分版本都有錯誤,大部分版本丟掉了<Files .htaccess> ,結果導致所有文件都被禁止訪問。如果用了錯誤的規則,所有內容都將無法訪問。

同樣道理,如果要禁止其他文件的訪問,用其他文件名替換就可以了。

 

Felix 發表在 痞客邦 PIXNET 留言(0) 人氣()