標籤:指令碼 分享圖片 over ali 導致 出現 cto apache伺服器 服務
Options
指令是Apache設定檔中一個比較常見也比較重要的指令,Options
指令可以在Apache伺服器核心配置(server config)、虛擬機器主機配置(virtual host)、特定目錄配置(directory)以及.htaccess檔案中使用。Options
指令的主要作用是控制特定目錄將啟用哪些伺服器特性。
Options
指令常見的配置範例程式碼如下:
- <Directory />
- #指定根目錄"/"啟用Indexes、FollowSymLinks兩種特性。
- Options Indexes FollowSymLinks
- AllowOverride all
- Order allow,deny
- Allow from all
- </Directory>
Options
指令的完整文法為:Options [+|-]option [[+|-]option] ...
。簡而言之,Options指令後可以附加指定多種伺服器特性,特性選項之間以空格分隔。下面我們來看看Options
指令後可以附加的特性選項的具體作用及含義(Apache配置中的內容均不區分大小寫):
-
All
-
表示除
MultiViews
之外的所有特性。這也是Options指令的
預設設定。
-
None
-
表示不啟用任何的伺服器特性。
-
FollowSymLinks
-
伺服器允許在此目錄中使用符號串連。如果該配置選項位於
<Location>
配置段中,將會被忽略。
-
Indexes
-
如果輸入的網址對應伺服器上的一個檔案目錄,而此目錄中又沒有
DirectoryIndex
指令(例如:
DirectoryIndex index.html index.php
),那麼伺服器會返回由
mod_autoindex
模組產生的一個格式化後的目錄列表,並列出該目錄下的所有檔案(如)。
-
MultiViews
-
允許使用
mod_negotiation
模組提供內容協商的"多重視圖"。簡而言之,如果用戶端請求的路徑可能對應多種類型的檔案,那麼伺服器將根據用戶端請求的具體情況自動選擇一個最匹配用戶端要求的檔案。例如,在伺服器網站的
file
檔案夾下中存在名為
hello.jpg
和
hello.html
的兩個檔案,此時使用者輸入
Http://localhost/file/hello
,如果在
file
檔案夾下並沒有
hello
子目錄,那麼伺服器將會嘗試在
file
檔案夾下尋找形如
hello.*
的檔案,然後根據使用者請求的具體情況返回最匹配要求的
hello.jpg
或者
hello.html
。
-
SymLinksIfOwnerMatch
-
伺服器僅在符號串連與目標檔案或目錄的所有者具有相同的使用者ID時才使用它。簡而言之,只有當符號串連和符號串連指向的目標檔案或目錄的所有者是同一使用者時,才會使用符號串連。如果該配置選項位於
<Location>
配置段中,將會被忽略。
-
ExecCGI
-
允許使用
mod_cgi
模組執行CGI指令碼。
-
Includes
-
允許使用
mod_include
模組提供的伺服器端包含功能。
-
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 Options指令詳解