今天下班後,同事問到這個東西的用法。我之前也沒接觸過,特意搜索了一下,如今保存方便之後使用。php
1.首先判斷服務器類型,服務器是否支持。html
2.寫法是否有錯誤。apache
3.須要的功能是否在.htaccess是否支持。windows
.htaccess是什麼?瀏覽器
.htaccess叫分佈式配置文件,它提供了針對目錄改變配置的方法——在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以做用於此目錄及其全部子目錄。而且子目錄中的指令會覆蓋更高級目錄或者主服務器配置文件中的指令。通常來講,若是你的虛擬主機使用的是Unix或Linux系統,或者任何版本的Apache網絡服務器,從理論上講都是支持.htaccess的。服務器
如何創建.htaccess?網絡
在咱們使用的windows(瘟到死)主機上建立.htaccess文件是很困難的。寫文件倒很容易,你只須要在文字編緝器(例如:記事本)裏寫下適當的代碼。困難的是文件的保存,由於.htaccess是一個古怪的文件名,其實它並無文件名,只有一個由8個字母(htaccess)組成的擴展名,而在windows系統中這是沒法接受的文件名。所以,這裏有3個方法能夠實現。dom
方法一:保存文件的時候將文檔保存成名爲「.htaccess」 (包括引號)或者htaccess.txt亦或者1.htaccess。再將其上傳到服務器上,以後直接使用FTP軟件來重命名。分佈式
方法二:保存文件的時候選擇文件—>另存爲,保存類型選全部文件,而後文件名輸入.htaccess ,這樣就OK啦o(∩_∩)o…。網站
方法三:直接在你的Unix或Linux虛擬主機上創建。
.htaccess是什麼?.htaccess是在Apache HTTP Server這款服務器架設軟件下的一個對於系統目錄進行各類權限規則設置的一個文件,存在於Linux操做系統中。比較常見的是定義默認首頁名稱,404頁面,301轉向,等等,還有更多的功能好比僞靜態,限制圖片外鏈,限制下載,密碼保護,去除頁面廣告等等,還有很是多的功能就不一一列舉。
其實這些功能大多能夠在cPanel控制面板來進行設置的(至關因而.htaccess的圖形化界面)。但對於高手來說,cPanel對於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> ,結果致使全部文件都被禁止訪問。若是用了錯誤的規則,全部內容都將沒法訪問。
一樣道理,若是要禁止其餘文件的訪問,用其餘文件名替換就能夠了。
根據同事發給我留言,她要實現的是僞靜態部分。
要是windows+iis 的話,恭喜您 Apache 支持這個.iis沒有apache模塊的話,您就自求多福吧