Apache Options指令詳解

前言:Options指令是Apache配置文件中一個比較常見也比較重要的指令,Options指令可以在Apache服務器核心配置(server config)、虛擬主機配置(virtual host)、特定目錄配置(directory)以及.htaccess文件中使用。Options指令的主要作用是控制特定目錄將啓用哪些服務器特性。

Options指令常見的配置示例代碼如下:

<Directory "/home/www">
    #指定根目錄/home/www啓用Indexes、FollowSymLinks兩種特性
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

Options服務器特性

Options指令的完整語法爲:Options [+|-]option [[+|-]option];簡而言之,Options指令後可以附加指定多種服務器特性,特性選項之間以空格分隔。下面我們來看看Options指令後可以附加的特性選項的具體作用及含義(Apache配置中的內容均不區分大小寫):

1、All

表示除MultiViews之外的所有特性(這也是Options指令的默認設置)

2、None

表示不啓用任何的服務器特性

服務器允許在此目錄中使用符號連接(如果該配置選項位於配置段中,將會被忽略)

4、Indexes

如果輸入的網址對應服務器上的一個文件目錄,而此目錄中又沒有DirectoryIndex指令(例如:DirectoryIndex index.html index.php),那麼服務器會返回由mod_autoindex模塊生成的一個格式化後的目錄列表,並列出該目錄下的所有文件(如下圖)

directory

4、MultiViews

允許使用mod_negotiation模塊提供內容協商的”多重視圖”。簡而言之,如果客戶端請求的路徑可能對應多種類型的文件,那麼服務器將根據客戶端請求的具體情況自動選擇一個最匹配客戶端要求的文件。例如,在服務器站點的file文件夾下中存在名爲hello.jpg和hello.html的兩個文件,此時用戶輸入Http://localhost/file/hello,如果在file文件夾下並沒有hello子目錄,那麼服務器將會嘗試在file文件夾下查找形如hello.*的文件,然後根據用戶請求的具體情況返回最匹配要求的hello.jpg或者hello.html

5、SymLinksIfOwnerMatch

服務器僅在符號連接與目標文件或目錄的所有者具有相同的用戶ID時才使用它。簡而言之,只有當符號連接和符號連接指向的目標文件或目錄的所有者是同一用戶時,纔會使用符號連接(如果該配置選項位於配置段中,將會被忽略)

6、ExecCGI

允許使用mod_cgi模塊執行CGI腳本

7、Includes

允許使用mod_include模塊提供的服務器端包含功能

8、IncludesNOEXEC

允許服務器端包含,但禁用”#exec cmd”和”#exec cgi”。但仍可以從ScriptAlias目錄使用”#include virtual”虛擬CGI腳本

注意

此外,比較細心的讀者應該注意到,Options指令語法允許在配置選項前加上符號”+”或者”-“,那麼這到底是什麼意思呢?

實際上,Apache允許在一個目錄配置中設置多個Options指令。不過,一般來說,如果一個目錄被多次設置了Options,則指定特性數量最多的一個Options指令會被完全接受(其它的被忽略),而各個Options指令之間並不會合併。但是如果我們在可選配置項前加上了符號”+”或”-“,那麼表示該可選項將會被合併。所有前面加有”+”號的可選項將強制覆蓋當前的可選項設置,而所有前面有”-“號的可選項將強制從當前可選項設置中去除。你可以參考下面的例子:

#示例1
<Directory /web/file>
    Options Indexes FollowSymLinks
</Directory>

<Directory /web/file/image>
    Options Includes
</Directory>
#目錄/web/file/image只會被設置Includes特性
#示例2
<Directory /web/file>
    Options Indexes FollowSymLinks
</Directory>

<Directory /web/file/image>
    Options +Includes -Indexes
</Directory>
#目錄/web/file/image將會被設置Includes、FollowSymLinks兩種特性

備註1:混合使用前面帶”+”/”-“和前面不帶”+”/”-“的同一可選項,可能會導致出現意料之外的結果
備註2:使用-IncludesNOEXEC或-Includes時,不論前面如何設置,都會完全禁用服務器端包含

結束語:團隊服務器配置需要,所以簡單的研究了下apache的配置文件;本文純屬轉載,感謝原博主(原文地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章