2013-04-07 71 views
0

在修改.htaccess文件中的某些配置時,我發現該指令RewriteOptions inherit已經存在。我對它做了什麼以及是否刪除該行並從新開始,或將我的配置追加到現有數據感到困惑。RewriteOptions在htaccess文件中繼承什麼?

這條指令是幹什麼用的,有沒有副作用?

旁註:我想用DirectoryIndex來選擇默認索引文件。

回答

7

Inherit option意味着htaccess的文件中的任何規則,在目錄「繼承」:

Inherit - 強制當前配置繼承父的配置。在每個虛擬服務器上下文中,這意味着主服務器的地圖,條件和規則被繼承。在每個目錄上下文中,這意味着父目錄的.htaccess配置或<Directory>部分的條件和規則被繼承。繼承的規則被虛擬地複製到正在使用該指令的部分。如果與本地規則結合使用,則將繼承的規則複製到本地規則的後面。該指令的位置 - 低於或高於當地規則 - 對此行爲沒有影響。如果本地規則強制重寫停止,則繼承的規則將不會被處理。

注意:從父作用域繼承的規則應用於子作用域中指定的規則之後。

通常情況下,如果你有一個.htaccess文件在一個特定的子目錄,在父目錄的任何規則都被取代,並不會被應用。見How directives are applied in the .htaccess files Apache HTTP Server Tutorial

.htaccess文件中找到的配置指令被應用到在其中.htaccess文件中找到的目錄中,並涉及其所有子目錄。但是,重要的是還要記住在更高的目錄中可能有.htaccess文件。指令按照找到的順序應用。因此,特定目錄中的.htaccess文件可能會覆蓋在目錄樹中位於較高位置的.htaccess文件中找到的指令。反過來,這些可能會覆蓋更高的指令,或者在主服務器配置文件本身中。

對於RewriteOptions inherit選項,父目錄中的任何重寫規則基本上都附加到子目錄中任何規則的末尾。 Apache 2.4有一個附加選項,可以在子目錄中的規則之前或之後添加它們。該指令只會影響mod_rewrite和重寫規則。 DirectoryIndex指令將不受影響。如果這個htaccess文件已經在你的文檔根目錄下,那麼你可以刪除它,因爲沒有「父」htaccess文件。