<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # .htaccess文件 `.htaccess`文件提供了針對每個目錄改變配置的方法。 ## .htaccess 文件 相關模塊 * `core` * `mod_authn_file` * `mod_authz_groupfile` * `mod_cgi` * `mod_include` * `mod_mime` 相關指令 * `AccessFileName` * `AllowOverride` * `Options` * `AddHandler` * `SetHandler` * `AuthType` * `AuthName` * `AuthUserFile` * `AuthGroupFile` * `Require` ## 工作原理和使用方法 `.htaccess`文件(或者"分布式配置文件")提供了針對每個目錄改變配置的方法,即在一個特定的目錄中放置一個包含指令的文件,其中的指令作用于此目錄及其所有子目錄。 ### 說明: 如果需要使用`.htaccess`以外的其他文件名,可以用`AccessFileName`指令來改變。例如,需要使用`.config` ,則可以在服務器配置文件中按以下方法配置: ``` AccessFileName .config ``` 通常,`.htaccess`文件使用的配置語法和[主配置文件](#calibre_link-327)一樣。`AllowOverride`指令按類別決定了`.htaccess`文件中哪些指令才是有效的。如果一個指令允許在`.htaccess`中使用,那么在本手冊的說明中,此指令會有一個[覆蓋項](#calibre_link-20)段,其中說明了為使此指令生效而必須在`AllowOverride`指令中設置的值。 例如,本手冊對`AddDefaultCharset`指令的闡述表明此指令可以用于`.htaccess`文件中(見"作用域"項),而[覆蓋項](#calibre_link-20)一行是`FileInfo` ,那么為了使`.htaccess`中的此指令有效,則至少要設置 `AllowOverride FileInfo` 。 ### 例子: | [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess | | --- | --- | | [覆蓋項](#calibre_link-66) | FileInfo | 如果不能確定某個指令是否可以用于`.htaccess`文件,可以查閱手冊中對指令的說明,看在"作用域"行中是否有".htaccess" 。 ## (不)使用.htaccess文件的場合 一般情況下,不應該使用`.htaccess`文件,除非你對主配置文件沒有訪問權限。有一種很常見的誤解,認為用戶認證只能通過`.htaccess`文件實現,其實并不是這樣,把用戶認證寫在主配置文件中是完全可行的,而且是一種很好的方法。 `.htaccess`文件應該被用在內容提供者需要針對特定目錄改變服務器的配置而又沒有root權限的情況下。如果服務器管理員不愿意頻繁修改配置,則可以允許用戶通過`.htaccess`文件自己修改配置,尤其是ISP在同一個機器上運行了多個用戶站點,而又希望用戶可以自己改變配置的情況下。 雖然如此,一般都應該盡可能地避免使用`.htaccess`文件。任何希望放在`.htaccess`文件中的配置,都可以放在主配置文件的`<Directory>`段中,而且更高效。 避免使用`.htaccess`文件有兩個主要原因。 首先是性能。如果`AllowOverride`啟用了`.htaccess`文件,則Apache需要在每個目錄中查找`.htaccess`文件,因此,無論是否真正用到,啟用`.htaccess`都會導致性能的下降。另外,對每一個請求,都需要讀取一次`.htaccess`文件。 還有,Apache必須在所有上級的目錄中查找`.htaccess`文件,以使所有有效的指令都起作用(參見[指令的生效](#calibre_link-329)),所以,如果請求`/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 ``` ## 指令的生效 `.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` ,它完全覆蓋了之前的設置。 ### 將.htaccess合并到主配置文件中 正如在[配置段(容器)](#calibre_link-256)中討論的那樣,`.htaccess`文件能夠覆蓋`<Directory>`段中對相應目錄的設置,但是也同樣會被主配置文件中其它類型的配置段所覆蓋。這個特性可以用來強制實施某些配置,甚至在`AllowOverride`已經許可的情況下。舉個例子來說,為了強迫在`.htaccess`中禁止腳本執行但不限制其它的情況下,可以這樣: ``` <Directory /> Allowoverride All </Directory> <Location /> Options +IncludesNoExec -ExecCGI </Location> ``` ## 認證舉例 如果你只是為了知道如何認證,而直接從這里開始看的,有很重要的一點需要注意,有一種常見的誤解,認為實現密碼認證必須要使用`.htaccess`文件,其實是不正確的。把認證指令放在主配置文件的`<Directory>`段中是一個更好的方法,而`.htaccess`文件應該僅僅用于無權訪問主配置文件的時候。參見[上述](#calibre_link-330)關于何時應該與何時不應該使用`.htaccess`文件的討論。 有此聲明在先,如果你仍然需要使用`.htaccess`文件,請繼續看以下說明。 `.htaccess`文件的內容: ``` AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins ``` 必須設置 `AllowOverride AuthConfig` 以允許這些指令生效。 更詳細的說明,請參見[認證、授權、訪問控制](#calibre_link-266)。 ## 服務器端包含(SSI)舉例 `.htaccess`文件的另一個常見用途是允許一個特定的目錄使用服務器端包含(SSI),可以在需要的目錄中放置`.htaccess`文件,并作如下配置: ``` Options +Includes AddType text/html shtml AddHandler server-parsed shtml ``` 注意,必須同時設置 `AllowOverride Options` 和 `AllowOverride FileInfo` 以使這些指令生效。 更詳細的有關服務器端包含的說明,請參見[SSI指南](#calibre_link-267)。 ## CGI舉例 可以通過`.htaccess`文件允許在特定的目錄中執行CGI程序,需要作如下配置: ``` Options +ExecCGI AddHandler cgi-script cgi pl ``` 另外,如下配置可以使給定目錄下的所有文件被視為CGI程序: ``` Options +ExecCGI SetHandler cgi-script ``` 注意,必須同時設置 `AllowOverride Options` 和 `AllowOverride FileInfo` 以使這些指令生效。 更詳細的有關CGI編程和配置的說明,請參見[CGI指南](#calibre_link-215)。 ## 疑難解答 如果在`.htaccess`文件中的某些指令不起作用,可能有多種原因。 最常見的原因是`AllowOverride`指令沒有被正確設置,必須確保沒有對此文件區域設置 `AllowOverride None` 。有一個很好的測試方法,就是在`.htaccess`文件隨便增加點無意義的垃圾內容,如果服務器沒有返回了一個錯誤消息,那么幾乎可以斷定設置了 `AllowOverride None` 。 在訪問文檔時,如果收到服務器的出錯消息,應該檢查Apache的錯誤日志,可以知道`.htaccess`文件中哪些指令是不允許使用的,也可能會發現需要糾正的語法錯誤。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看