亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

深入理解PHP的.htaccess文件

時間:2024-08-11 20:31:33 php語言 我要投稿
  • 相關(guān)推薦

深入理解PHP的.htaccess文件

  導語:PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發(fā)領(lǐng)域。下面我們來深入理解PHP的.htaccess文件,希望對大家有所幫助。

  工作原理和使用方法

  .htaccess文件(分布式配置文件)提供了針對每個目錄改變配置的方法,即在一個特定的目錄中放置一個包含指令的文件,其中的指令作用于此目錄及其所有子目錄。

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

  通常,.htaccess文件使用的配置語法和主配置文件一樣。AllowOverride指令按類別決定了.htaccess文件中哪些指令才是有效的。如果一個指令允許在.htaccess中使用,那么在本手冊的說明中,此指令會有一個覆蓋項段,其中說明了為使此指令生效而必須在AllowOverride指令中設置的值。

  使用.htaccess文件的場合

  一般情況下,不應該使用.htaccess文件,除非你對主配置文件沒有訪問權(quán)限。有一種很常見的誤解,認為用戶認證只能通過.htaccess文件實現(xiàn),其實并不是這樣,把用戶認證寫在主配置文件中是完全可行的,而且是一種很好的方法。

  .htaccess文件應該被用在內(nèi)容提供者需要針對特定目錄改變服務器的配置而又沒有root權(quán)限的情況下。如果服務器管理員不愿意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在同一個機器上運行了多個用戶站點,而又希望用戶可以自己改變配置的情況下。

  雖然如此,一般都應該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。

  避免使用.htaccess文件有兩個主要原因。

  首先是性能。如果AllowOverride啟用了.htaccess文件,則Apache需要在每個目錄中查找.htaccess文件,因此,無論是否真正用到,啟用.htaccess都會導致性能的下降。另外,對每一個請求,都需要讀取一次.htaccess文件。

  還有,Apache必須在所有上級的目錄中查找.htaccess文件,以使所有有效的指令都起作用(參見指令的生效),所以,如果請求/www/htdocs/example中的頁面,Apache必須查找以下文件:

  /.htaccess

  /www/.htaccess

  /www/htdocs/.htaccess

  /www/htdocs/example/.htaccess

  總共要訪問4個額外的文件,即使這些文件都不存在。(注意,這可能僅僅由于允許根目錄"/"使用.htaccess ,雖然這種情況并不多。)

  其次是安全。這樣會允許用戶自己修改服務器的配置,這可能會導致某些意想不到的修改,所以請認真考慮是否應當給予用戶這樣的特權(quán)。但是,如果給予用戶較少的特權(quán)而不能滿足其需要,則會帶來額外的技術(shù)支持請求,所以,必須明確地告訴用戶已經(jīng)給予他們的權(quán)限,說明AllowOverride設置的值,并引導他們參閱相應的說明,以免日后生出許多麻煩。

  注意,在/www/htdocs/example目錄下的.htaccess文件中放置指令,與在主配置文件中段中放置相同指令,是完全等效的。

  把配置放在主配置文件中更加高效,因為只需要在Apache啟動時讀取一次,而不是在每次文件被請求時都讀取。

  指令的生效

  .htaccess文件中的配置指令作用于.htaccess文件所在的目錄及其所有子目錄,但是很重要的、需要注意的是,其上級目錄也可能會有.htaccess文件,而指令是按查找順序依次生效的,所以一個特定目錄下的.htaccess文件中的指令可能會覆蓋其上級目錄中的.htaccess文件中的指令,即子目錄中的指令會覆蓋父目錄或者主配置文件中的指令。

  例子:/www/htdocs/example1目錄中的.htaccess文件有如下內(nèi)容:Options +ExecCGI

  (注意:必須設置"AllowOverride Options"以允許在.htaccess中使用"Options"指令)

  /www/htdocs/example1/example2目錄中的.htaccess文件有如下內(nèi)容:Options Includes

  由于第二個.htaccess文件的存在,/www/htdocs/example1/example2中的CGI執(zhí)行是不允許的,而只允許 Options Includes ,它完全覆蓋了之前的設置。

  將.htaccess合并到主配置文件中

  正如在配置段(容器)中討論的那樣,.htaccess文件能夠覆蓋段中對相應目錄的設置,但是也同樣會被主配置文件中其它類型的配置段所覆蓋。這個特性可以用來強制實施某些配置,甚至在AllowOverride已經(jīng)許可的情況下。舉個例子來說,為了強迫在.htaccess中禁止腳本執(zhí)行但不限制其它的情況下,可以這樣:

  Allowoverride All

  Options +IncludesNoExec -ExecCGI

  認證舉例

  如果你只是為了知道如何認證,而直接從這里開始看的,有很重要的一點需要注意,有一種常見的誤解,認為實現(xiàn)密碼認證必須要使用.htaccess文件,其實是不正確的。把認證指令放在主配置文件的段中是一個更好的方法,而.htaccess文件應該僅僅用于無權(quán)訪問主配置文件的時候。參見上述關(guān)于何時應該與何時不應該使用.htaccess文件的討論。

  有此聲明在先,如果你仍然需要使用.htaccess文件,請繼續(xù)看以下說明。.htaccess文件的內(nèi)容:

1
2
3
4
5
AuthType Basic          
AuthName "Password Required"          
AuthUserFile /www/passwords/password.file          
AuthGroupFile /www/passwords/group.file          
Require Group admins          

  必須設置 AllowOverride AuthConfig 以允許這些指令生效。

  服務器端包含(SSI)舉例

  .htaccess文件的另一個常見用途是允許一個特定的目錄使用服務器端包含(SSI),可以在需要的目錄中放置.htaccess文件,并作如下配置:

  Options +Includes

  AddType text/html shtml

  AddHandler server-parsed shtml

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

  CGI舉例

  可以通過.htaccess文件允許在特定的目錄中執(zhí)行CGI程序,需要作如下配置:

  Options +ExecCGI

  AddHandler cgi-script cgi pl

  另外,如下配置可以使給定目錄下的所有文件被視為CGI程序:

  Options +ExecCGI

  SetHandler cgi-script

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

  疑難解答

  如果在.htaccess文件中的某些指令不起作用,可能有多種原因。

  最常見的原因是AllowOverride指令沒有被正確設置,必須確保沒有對此文件區(qū)域設置 AllowOverride None 。有一個很好的測試方法,就是在.htaccess文件隨便增加點無意義的垃圾內(nèi)容,如果服務器沒有返回了一個錯誤消息,那么幾乎可以斷定設置了 AllowOverride None 。

  在訪問文檔時,如果收到服務器的出錯消息,應該檢查Apache的錯誤日志,可以知道.htaccess文件中哪些指令是不允許使用的,也可能會發(fā)現(xiàn)需要糾正的語法錯誤。

【深入理解PHP的.htaccess文件】相關(guān)文章:

php是什么文件03-30

PHP文件怎么操作11-26

php文件鎖怎么用03-27

PHP常用的文件操作函數(shù)11-26

php中目錄文件操作詳談03-01

PHP遍歷目錄文件常用方法03-24

用PHP遍歷目錄下的全部文件02-11

PHP實現(xiàn)大文件上傳源代碼11-23

深入理解java的反射04-02