.htaccess
概述
[編輯]下面的這些聲明經常用於配置伺服器,來發送出自定義的文檔在響應客戶端時的錯誤,就像 "404: Not Found沒有找到" 或者伺服器錯誤如 "503: Service Unavailable 服務無法提供"(參看HTTP狀態碼):
ErrorDocument 404 /error-pages/not-found.html ErrorDocument 503 /error-pages/service-unavailable.html
當設置了自定義的報錯頁面,重要的是記住這些頁面能處理多種多樣的URL,當在這些出錯的文檔連結(包括圖片,樣式腳本和其他文檔)必須指定使用"絕對"URL(比如開頭為"http://")或者相對文檔根目錄的URL(開頭用"/")。
同樣,對於訪問網站其他未被授權訪問部分的用戶,"403: Forbidden禁止"錯誤的報錯頁面必須放在該用戶能訪問到的目錄下。
- 常規的做法是
用新建另外的包含这些代码行: Order allow,deny Allow from all
.htaccess文件在/error-pages 目錄下,來建立可被任何人訪問的目錄來包含這些報錯頁面。
密碼保護
[編輯]給用戶顯示目錄以前需要輸入賬戶名及密碼。
AuthUserFile /home/newuser/www/stash/.htpasswd AuthGroupFile /dev/null AuthName "Protected Directory" AuthType Basic <Limit GET POST> require user newuser </Limit>
這個方法同樣適用在一個目錄下某個特殊的文件。
<Files protected_file.php> AuthUserFile /home/newuser/www/stash/.htpasswd AuthName "Protected File" AuthType Basic Require valid-user </Files>
下面是創建新用戶newuser的新密碼的代碼命令。
htpasswd /home/newuser/www/stash/.htpasswd newuser
解除密碼保護
[編輯]在另外的保護的框架中,解除一個子目錄的密碼保護:
Satisfy any
AddType text/html .shtml AddHandler server-parsed .shtml Options Indexes FollowSymLinks Includes
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
這個任何人可以訪問 http://www.example.com/ 能看到該站的主頁homepage.html的頁面,勝過默認的index.html。
頁面跳轉
[編輯]Redirect page1.html page2.html
如果某人訪問 http://www.example.com/page1.html,他將被跳轉到(帶有 HTTP 狀態代碼 302)的 http://www.example.com/page2.html
防止圖片熱鏈
[編輯]後面的 .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 來保護電影檔案是無效的。
統一WEB地址
[編輯]RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
如果有人輸入你的網站地址沒有'www'前綴,上面代碼能讓這些地址能跳轉到有'www'前綴的頁面
目錄規則
[編輯]一個 .htaccess 文件控制所在目錄,包括所有子目錄。 不管怎樣,在子目錄放置其他的.htaccess文件都是無效的。
.htaccess用戶許可,是伺服器級別AllowOverride控制,標明是Apache伺服器文檔的證明文件。
其他應用
[編輯]已有一些WEB開發者修改.htaccess來完成在服務內容傳到瀏覽器之前,自定義的伺服器端的任務。 開發者Shaun Inman 展示了這種沒有CSS的修改.htaccess可能,請訪問 allow for Server Side Constants。