-.htAccess文件(或者"分布式配置文件"提供了針對目錄改變配置的方法,即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件,以作用於此目錄及其所有子目錄。作為用戶,所能使用的命令受到限制。管理員可以通過apache的AllowOverride指令來設置。
-子目錄中的指令會覆蓋更高級目錄或者主服務器配置文件中的指令。
-.htAccess必須以ASCII模式上傳,最好將其權限設置為644。
錯誤文檔的定位
常用的客戶端請求錯誤返回代碼:
401AuthorizationRequired
403Forbidden
404NotFound
405MethodNotAllowed
408RequestTimedOut
411ContentLengthRequired
412PreconditionFailed
413RequestEntityTooLong
414RequestURITooLong
415UnsupportedMediaType
常見的服務器錯誤返回代碼:
500InternalServerError
用戶可以利用.htaccess指定自己事先制作好的錯誤提醒頁面。一般情況下,人們可以專門設立一個目錄,例如errors放置這些頁面。然後再.htAccess中,加入如下的指令:
ErrorDocument404/errors/notfound.Html
ErrorDocument500/errors/internalerror.Html
一條指令一行。上述第一條指令的意思是對於404,也就是沒有找到所需要的文檔的時候得顯示頁面為/errors目錄下的notfound.Html頁面。不難看出語法格式為:
ErrorDocument錯誤代碼/目錄名/文件名.擴展名
如果所需要提示的信息很少的話,不必專門制作頁面,直接在指令中使用Html號了,例如下面這個例子:
ErrorDocument401"<bodybgcolor=#ffffff><h1>你沒有權限訪問該頁面,請放棄!</h1></body>"
文檔訪問的密碼保護
要利用.htAccess對某個目錄下的文檔設定訪問用戶和對應的密碼,首先要做的是生成一個.htpasswd的文本文檔,例如:
zheng:y4E7Ep8e7EYV
這裡密碼經過加密,用戶可以自己找些工具將密碼加密成.htAccess支持的編碼。該文檔最好不要放在www目錄下,建議放在www根目錄文檔之外,這樣更為安全些。
有了授權用戶文檔,可以在.htAccess中加入如下指令了:
AuthUserFile.htpasswd的服務器目錄
AuthGroupFile/dev/null(需要授權訪問的目錄)
AuthNameEnterPassWord
AuthTypeBasic(授權類型)
requireuserwsabstract(允許訪問的用戶,如果希望表中所有用戶都允許,可以使用requirevalid-user)
注,括號部分為學習時候自己添加的注釋
拒絕來自某個IP的訪問
如果我不想某個政府部門訪問到我的站點的內容,那可以通過.htAccess中加入該部門的IP而將它們拒絕在外。
例如:
orderallow,deny
denyfrom210.21.112.43
denyfrom219.146.95
allowfromall
第二行拒絕某個IP,第三行拒絕某個IP段,也就是219.146.95.0~219.146.95.255
想要拒絕所有人?用denyfromall好了。不止用IP,也可以用域名來設定。
保護.htAccess文檔
在使用.htaccess來設置目錄的密碼保護時,它包含了密碼文件的路徑。從安全考慮,有必要把.htaccess也保護起來,不讓別人看到其中的內容。雖然可以用其他方式做到這點,比如文檔的權限。不過,.htAccess本身也能做到,只需加入如下的指令:
<Files.htAccess>
orderallow,deny
denyfromall
</Files>
URL轉向
我們可能對網站進行重新規劃,將文檔進行了遷移,或者更改了目錄。這時候,來自搜索引擎或者其他網站鏈接過來的訪問就可能出錯。這種情況下,可以通過如下指令來完成舊的URL自動轉向到新的地址:
Redirect/舊目錄/舊文檔名新文檔的地址
或者整個目錄的轉向:
Redirect舊目錄新目錄
改變缺省的首頁文件
一般情況下缺省的首頁文件名有default、index等。不過,有些時候目錄中沒有缺省文件,而是某個特定的文件名,比如在pmwiki中是pmwiki.PHP。這種情況下,要用戶記住文件名來訪問很麻煩。在.htAccess中可以輕易的設置新的缺省文件名:
DirectoryIndex新的缺省文件名
也可以列出多個,順序表明它們之間的優先級別