.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

伺服器內置SSI[編輯]

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

用戶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

這個任何人可以訪問 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