.htaccess設定指南經典說明

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

如果你的伺服器目錄結構是這樣:

/usr/corsak/www/maindir

如果Apache指令中開啟了AllowOverride支援.htaccess檔案,每訪問一次會依次搜尋:

/usr/corsak/www/maindir/.htaccess
/usr/corsak/www/.htaccess
/usr/corsak/.htaccess

下面是一份詳細的文件,不知道哪年從哪找的。
因為在一個國外的空間的根資料夾下看到這個.htaccess,搞不懂是幹什麼的,在落伍論壇找到一篇文章,先轉過來放著,以後再慢慢研究,嘿嘿..  
    Apache指南: .htaccess檔案  

.htaccess檔案提供了針對目錄改變配置的方法。  

  * .htaccess檔案  
  * 工作原理和使用方法  
  * 使用.htaccess檔案的場合  
  * 指令的生效  
  * 認證舉例  
  * 伺服器端包含舉例  
  * CGI舉例  
  * 疑難解答  

top  
.htaccess檔案  
相關模組     相關指令  

  * core  
  * mod_auth  
  * mod_cgi  
  * mod_include  
  * mod_mime  

      

  * AccessFileName  
  * AllowOverride  
  * Options  
  * AddHandler  
  * SetHandler  
  * AuthType  
  * AuthName  
  * AuthUserFile  
  * AuthGroupFile  
  * Require  

top  
工作原理和使用方法  

.htaccess檔案(或者”分散式配置檔案”提供了針對目錄改變配置的方法, 即,在一個特定的文件目錄中放置一個包含一個或多個指令的檔案, 以作用於此目錄及其所有子目錄。  

說明:如果需要使用.htaccess以外的其他檔名,可以用AccessFileName指令來改變。 例如,需要使用.config,則可以在伺服器配置檔案中按以下方法配置:  

AccessFileName .config  

允許放在這些檔案中的指令取決於AllowOverride指令, 此指令按類別決定了.htaccess檔案中哪些指令才是有效的。 如果一個指令允許放在.htaccess檔案中,則,在本手冊的說明中,此指令會有一個覆蓋段, 其中說明了為使此指令生效而必須在AllowOverride指令中設定的值。  

例如,本手冊對AddDefaultCharset指令的說明表明了, 此指令可以用於.htaccess檔案(見 Context一行),而Override一行是”FileInfo”, 那麼為使.htaccess中的此指令有效,則至少要設定”AllowOverride FileInfo”。  
例子:  
Context:     server config, virtual host, directory, .htaccess  
Override:     FileInfo  

如果不能確定一個特定的指令是否允許用於.htaccess檔案, 可以查閱手冊中對指令的說明,看在Context(“上下文”)行中是否有”.htaccess.”。  
top  
使用.htaccess檔案的場合  

一般情況下,不應該使用.htaccess檔案,除非你對主伺服器配置檔案沒有存取許可權。 有一種很常見的誤解,認為使用者認證只能通過.htaccess檔案實現,但並不是這樣, 把使用者認證寫在主伺服器配置中是完全可行的,而且是一種很好的方法。  

在內容提供者需要針對目錄改變伺服器的配置而對伺服器系統沒有root許可權時, 則應該使用.htaccess檔案。如果伺服器管理員不願意頻繁修改配置, 則可以允許使用者通過.htaccess檔案自己修改配置,尤其是ISP在一個機器上 宿主多個使用者站點,而又希望使用者可以自己改變配置的情況下。  

雖然如此,一般都應該儘可能地避免使用.htaccess檔案。 任何希望放在.htaccess檔案中的配置,都可以放在主伺服器的<Directory>段中,而且更高效。  

避免使用.htaccess檔案有兩個主要原因。  

首先是效能。 如果AllowOverride允許使用.htaccess檔案, 則,Apache需要在每個目錄中查詢.htaccess檔案,因此,無論是否真正用到, 允許使用.htaccess檔案都會導致效能的下降。 另外,每次請求一個頁面時,都需要讀取.htaccess檔案。  

還有,Apache必須在所有更高階的目錄中查詢.htaccess檔案, 使所有有效的指令都起作用(參見how directives are applied.),所以, 如果有對/www/htdocs/example中頁面的請求,Apache必須查詢以下檔案:  

/.htaccess  
/www/.htaccess  
/www/htdocs/.htaccess  
/www/htdocs/example/.htaccess  

而且,對此目錄以外的每個檔案訪問,還有4個附加的檔案系統訪問,即使這些檔案都不存在。 (注意,這可能僅僅發生在 / 允許使用.htaccess檔案的情況下,雖然這種情況並不多。)  

其次是安全。 如此,會允許使用者修改伺服器的配置,可能會導致未加限制的修改,請認真考慮是否給予使用者這樣的特權。 但是,如果給予使用者較少的特權而不能滿足其需要,則會帶來額外的技術支援請求, 所以,必須明確地告訴使用者已經給予他們的許可權,說明AllowOverride設定的值, 並引導他們參閱相應的說明,以免日後許多麻煩。  

注意,在/www/htdocs/example目錄下.htaccess檔案中放置指令,與, 在主伺服器配置檔案中<Directory /www/htdocs/example>段中放置相同指令, 是等效的。:  

/www/htdocs/example中的.htaccess:  
/www/htdocs/example中.htaccess檔案的內容  

AddType text/example .exm  
httpd.conf檔案中的段  

<Directory /www/htdocs/example>  
AddType text/example .exm  
</Directory>  

但是,把這個配置放置在伺服器配置檔案中則更加高效,因為只需要在Apache啟動時讀取一次, 而不是在有檔案請求時每次都讀取。  

將AllowOverride設定為”none”可以完全禁止使用.htaccess檔案。  

AllowOverride None  
top  
指令的生效  

.htaccess檔案中的配置指令作用於.htaccess檔案所在的目錄及其所有子目錄, 但是,很重要需要記住的是,其更高階的目錄也可能會有.htaccess檔案, 而指令是按查詢順序依次生效,所以, 一個特定目錄下的.htaccess檔案中的指令可能會覆蓋其更高階目錄中的 .htaccess檔案的指令,即, 子目錄中的指令會覆蓋更高階目錄或者主伺服器配置檔案中的指令。  

例如:  

目錄/www/htdocs/example1中的.htaccess檔案有如下內容:  

Options  ExecCGI  

(注意: 必須設定”AllowOverride Options”以允許在.htaccess檔案中使用 “Options”指令。)  

在目錄/www/htdocs/example1/example2中的.htaccess檔案有如下內容:  

Options Includes  

由於第二個.htaccess檔案的存在,/www/htdocs/example1/example2中 的CGI執行是不允許的,而只允許Options Includes,它完全覆蓋了之前的設定。  
top  
認證舉例  

如果你為了知道如何認證,直接從這裡開始看,有很重要的一點需要注意,有一種常見的誤解, 認為實現密碼認證必須要使用.htaccess檔案,其實不是這樣。 把認證指令放在主伺服器配置檔案的<Directory>段中,是一個更好的方法, 而.htaccess檔案應該僅僅用於無權訪問主伺服器配置檔案的時候。 參見上述的使用.htaccess檔案的場合。  

有此宣告在先,如果你仍然需要使用.htaccess檔案,請看以下說明。  

必須設定”AllowOverride AuthConfig”以允許這些指令生效  

.htaccess檔案的內容:  

AuthType Basic  
AuthName “Password Required”  
AuthUserFile /www/passwords/password.file  
AuthGroupFile /www/passwords/group.file  
Require Group admins  

注意,必須設定AllowOverride AuthConfig以允許這些指令生效  

更詳細的有關身份識別和認證的說明,請參見authentication tutorial。  
top  
伺服器端包含舉例  

.htaccess檔案的另一個常見用途是允許一個特定目錄的伺服器端包含(Server Side Includes), 可以在需要的目錄中放置.htaccess檔案,並如下配置:  

Options  Includes  
AddType text/html shtml  
AddHandler server-parsed shtml  

注意,必須同時設定AllowOverride Options和 AllowOverride FileInfo使這些指令生效。  

更詳細的有關伺服器端包含的說明,請參見SSI tutorial。  
top  
CGI舉例  

最後,可以通過.htaccess檔案允許在特定目錄中執行CGI程式,需按如下配置:  

Options  ExecCGI  
AddHandler cgi-script cgi pl  

另外,如下,可以使給定目錄下所有檔案被視為CGI程式:  

Options  ExecCGI  
SetHandler cgi-script  

注意,必須設定AllowOverride Options使這些指令生效。  

更詳細的有關CGI程式設計和配置的說明,請參見CGI tutorial。  
top  
疑難解答  

如果在.htaccess檔案中寫入了配置指令但不起作用,可能有多種原因。  

最常見的原因是,AllowOverride指令沒有被正確設定, 必須確保沒有對此檔案區域設定AllowOverride None。有一個很好的測試方法,即, 在.htaccess檔案隨便增加點沒用的內容,如果伺服器沒有返回了一個錯誤訊息, 那麼幾乎可以斷定設定了AllowOverride None。  

在訪問文件時,如果收到伺服器的出錯訊息,應該檢查Apache的出錯日誌, 可以知道.htaccess檔案中哪些指令是不允許使用的,也可能會發現需要糾正的語法錯誤。  

.htaccess檔案使用手冊  

– .htaccess檔案(或者”分散式配置檔案”提供了針對目錄改變配置的方法, 即,在一個特定的文件目錄中放置一個包含一個或多個指令的檔案,以作用於此目錄及其所有子目錄。作為使用者,所能使用的命令受到限制。管理員可以通過Apache的AllowOverride指令來設定。  

– 子目錄中的指令會覆蓋更高階目錄或者主伺服器配置檔案中的指令。  

– .htaccess必須以ASCII模式上傳,最好將其許可權設定為644。  

錯誤文件的定位  

常用的客戶端請求錯誤返回程式碼:  
401 Authorization Required  
403 Forbidden  
404 Not Found  
405 Method Not Allowed  
408 Request Timed Out  
411 Content Length Required  
412 Precondition Failed  
413 Request Entity Too Long  
414 Request URI Too Long  
415 Unsupported Media Type  
常見的伺服器錯誤返回程式碼:  
500 Internal Server Error  

使用者可以利用.htaccess指定自己事先製作好的錯誤提醒頁面。一般情況下,人們可以專門設立一個目錄,例如errors放置這些頁面。然後再.htaccess中,加入如下的指令:  

ErrorDocument 404 /errors/notfound.html  
ErrorDocument 500 /errors/internalerror.html  

一條指令一行。上述第一條指令的意思是對於404,也就是沒有找到所需要的文件的時候得顯示頁面為/errors目錄下的notfound.html頁面。不難看出語法格式為:  

ErrorDocument 錯誤程式碼 /目錄名/檔名.副檔名  

如果所需要提示的資訊很少的話,不必專門製作頁面,直接在指令中使用HTML號了,例如下面這個例子:  

ErrorDocument 401 “<body bgcolor=#ffffff><h1>你沒有許可權訪問該頁面,請放棄!</h1></body>”  

文件訪問的密碼保護  

要利用.htaccess對某個目錄下的文件設定訪問使用者和對應的密碼,首先要做的是生成一個.htpasswd的文字文件,例如:  

zheng:y4E7Ep8e7EYV  

這裡密碼經過加密,使用者可以自己找些工具將密碼加密成.htaccess支援的編碼。該文件最好不要放在www目錄下,建議放在www根目錄文件之外,這樣更為安全些。  

有了授權使用者文件,可以在.htaccess中加入如下指令了:  

AuthUserFile .htpasswd的伺服器目錄  
AuthGroupFile /dev/null (需要授權訪問的目錄)  
AuthName EnterPassword  
AuthType Basic (授權型別)  

require user wsabstract (允許訪問的使用者,如果希望表中所有使用者都允許,可以使用 require valid-user)  

注,括號部分為學習時候自己新增的註釋  

拒絕來自某個IP的訪問  

如果我不想某個政府部門訪問到我的站點的內容,那可以通過.htaccess中加入該部門的IP而將它們拒絕在外。  

例如:  

order allow,deny  
deny from 210.10.56.32  
deny from 219.5.45.  
allow from all  

第二行拒絕某個IP,第三行拒絕某個IP段,也就是219.5.45.0~219.2.45.255  

想要拒絕所有人?用deny from all好了。不止用IP,也可以用域名來設定。  

保護.htaccess文件  

在使用.htaccess來設定目錄的密碼保護時,它包含了密碼檔案的路徑。從安全考慮,有必要把.htaccess也保護起來,不讓別人看到其中的內容。雖然可以用其他方式做到這點,比如文件的許可權。不過,.htaccess本身也能做到,只需加入如下的指令:  

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

URL轉向  

我們可能對網站進行重新規劃,將文件進行了遷移,或者更改了目錄。這時候,來自搜尋引擎或者其他網站連結過來的訪問就可能出錯。這種情況下,可以通過如下指令來完成舊的URL自動轉向到新的地址:  

Redirect /舊目錄/舊文件名 新文件的地址  

或者整個目錄的轉向:  

Redirect 舊目錄 新目錄  

改變預設的首頁檔案  

一般情況下預設的首頁檔名有default、index等。不過,有些時候目錄中沒有預設檔案,而是某個特定的檔名,比如在pmwiki中是pmwiki.php。這種情況下,要使用者記住檔名來訪問很麻煩。在.htaccess中可以輕易的設定新的預設檔名:  

DirectoryIndex 新的預設檔名  

也可以列出多個,順序表明它們之間的優先順序別,例如:  

DirectoryIndex filename.html index.cgi index.pl default.htm  

防止盜鏈  

如果不喜歡別人在他們的網頁上連線自己的圖片、文件的話,也可以通過htaccess的指令來做到。  

所需要的指令如下:  

RewriteEngine on  
RewriteCond % !^$  
RewriteCond % !^http://(www/.)?mydomain.com/.*$ [NC]  
RewriteRule \.(gif|jpg)$ – [F]  

如果覺得讓別人的頁面開個天窗不好看,那可以用一張圖片來代替:  

RewriteEngine on  
RewriteCond % !^$  
RewriteCond % !^http://(www/.)?mydomain.com/.*$ [NC]  
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/替代圖片檔名 [R,L]

– .htaccess檔案(或者”分散式配置檔案”提供了針對目錄改變配置的方法, 即,在一個特定的文件目錄中放置一個包含一個或多個指令的檔案, 以作用於此目錄及其所有子目錄。作為使用者,所能使用的命令受到限制。管理員可以通過Apache的AllowOverride指令來設定。  

– 子目錄中的指令會覆蓋更高階目錄或者主伺服器配置檔案中的指令。  

– .htaccess必須以ASCII模式上傳,最好將其許可權設定為644。  

錯誤文件的定位  

常用的客戶端請求錯誤返回程式碼:  
401 Authorization Required  
403 Forbidden  
404 Not Found  
405 Method Not Allowed  
408 Request Timed Out  
411 Content Length Required  
412 Precondition Failed  
413 Request Entity Too Long  
414 Request URI Too Long  
415 Unsupported Media Type  
常見的伺服器錯誤返回程式碼:  
500 Internal Server Error  

使用者可以利用.htaccess指定自己事先製作好的錯誤提醒頁面。一般情況下,人們可以專門設立一個目錄,例如errors放置這些頁面。然後再.htaccess中,加入如下的指令:  

ErrorDocument 404 /errors/notfound.html  
ErrorDocument 500 /errors/internalerror.html  

一條指令一行。上述第一條指令的意思是對於404,也就是沒有找到所需要的文件的時候得顯示頁面為/errors目錄下的notfound.html頁面。不難看出語法格式為:  

ErrorDocument 錯誤程式碼 /目錄名/檔名.副檔名  

如果所需要提示的資訊很少的話,不必專門製作頁面,直接在指令中使用HTML號了,例如下面這個例子:  

ErrorDocument 401 “<body bgcolor=#ffffff><h1>你沒有許可權訪問該頁面,請放棄!</h1></body>”  

文件訪問的密碼保護  

要利用.htaccess對某個目錄下的文件設定訪問使用者和對應的密碼,首先要做的是生成一個.htpasswd的文字文件,例如:  

zheng:y4E7Ep8e7EYV  

這裡密碼經過加密,使用者可以自己找些工具將密碼加密成.htaccess支援的編碼。該文件最好不要放在www目錄下,建議放在www根目錄文件之外,這樣更為安全些。  

有了授權使用者文件,可以在.htaccess中加入如下指令了:  

AuthUserFile .htpasswd的伺服器目錄  
AuthGroupFile /dev/null (需要授權訪問的目錄)  
AuthName EnterPassword  
AuthType Basic (授權型別)  

require user wsabstract (允許訪問的使用者,如果希望表中所有使用者都允許,可以使用 require valid-user)  

注,括號部分為學習時候自己新增的註釋  

拒絕來自某個IP的訪問  

如果我不想某個政府部門訪問到我的站點的內容,那可以通過.htaccess中加入該部門的IP而將它們拒絕在外。  

例如:  

order allow,deny  
deny from 210.10.56.32  
deny from 219.5.45.  
allow from all  

第二行拒絕某個IP,第三行拒絕某個IP段,也就是219.5.45.0~219.2.45.255  

想要拒絕所有人?用deny from all好了。不止用IP,也可以用域名來設定。  

保護.htaccess文件  

在使用.htaccess來設定目錄的密碼保護時,它包含了密碼檔案的路徑。從安全考慮,有必要把.htaccess也保護起來,不讓別人看到其中的內容。雖然可以用其他方式做到這點,比如文件的許可權。不過,.htaccess本身也能做到,只需加入如下的指令:  

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

URL轉向  

我們可能對網站進行重新規劃,將文件進行了遷移,或者更改了目錄。這時候,來自搜尋引擎或者其他網站連結過來的訪問就可能出錯。這種情況下,可以通過如下指令來完成舊的URL自動轉向到新的地址:  

Redirect /舊目錄/舊文件名 新文件的地址  

或者整個目錄的轉向:  

Redirect 舊目錄 新目錄  

改變預設的首頁檔案  

一般情況下預設的首頁檔名有default、index等。不過,有些時候目錄中沒有預設檔案,而是某個特定的檔名,比如在pmwiki中是pmwiki.php。這種情況下,要使用者記住檔名來訪問很麻煩。在.htaccess中可以輕易的設定新的預設檔名:  

DirectoryIndex 新的預設檔名  

也可以列出多個,順序表明它們之間的優先順序別,例如:  

DirectoryIndex filename.html index.cgi index.pl default.htm  

防止盜鏈  

如果不喜歡別人在他們的網頁上連線自己的圖片、文件的話,也可以通過htaccess的指令來做到。  

所需要的指令如下:  

RewriteEngine on  
RewriteCond % !^$  
RewriteCond % !^http://(www/.)?mydomain.com/.*$ [NC]  
RewriteRule \.(gif|jpg)$ – [F]  

如果覺得讓別人的頁面開個天窗不好看,那可以用一張圖片來代替:  

RewriteEngine on  
RewriteCond % !^$  
RewriteCond % !^http://(www/.)?mydomain.com/.*$ [NC]  
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/替代圖片檔名 [R,L]  

一. 自定義404,401,等錯誤  
1. 
首先建立一個名為: .htaccess  
寫入以下內容  
ErrorDocument 401 /err401.html  
ErrorDocument 402 /err402.html  
ErrorDocument 403 /err403.html  
ErrorDocument 404 /err404.html  

其中,401,402,403,404代表錯誤型別,  
後面的err401.html代表其相對應的頁面,  

2. 
分別建立名字為:  
err401.html,err402.html………  
的檔案,當出現對應的錯誤的時候,  
就會指向對面的頁面  

3. 
傳到根目錄下,  
也就是 public_html 目錄下  
一切就OK了 

二. 去掉廣告 
建個檔名 .htaccess 的檔案, 檔案內容如下:  
LayoutIgnoreURI *.php  
LayoutIgnoreURI *.cgi  
LayoutIgnoreURI *.htm  
LayoutIgnoreURI *.html  

將 .htaccess 上傳至空間的 Public_html 目錄下,即可去掉廣告!  

注意 *.* 這裡..想去那種副檔名的檔案,就寫上那種檔案的副檔名!  
這個是最簡單的方法,只要在根目錄加這個檔案,那麼整個網站都不會有廣告!

您可能感興趣的文章:

16個簡單實用的.htaccess使用技巧htaccess 將所有請求重定向到某個URL地址的規則.htaccess檔案保護例項講解.htaccess使用方法總結apache開啟.htaccess及.htaccess的使用方法apache下.htaccess的功能及寫法使用htaccess規範化網址的配置.htaccess檔案使用教程總結.htaccess教程之.httacces檔案介紹與建立

相關文章

伺服器 最新文章