2011-09-16 66 views
1

我有一個.htaccess文件在我的根目錄下(的public_html /),看起來像這樣:(XXX.XX.XX.XX代表一個IP)從根目錄獲取.htaccess應用於所有目錄?

RewriteCond %{HTTP_HOST} ^XXX.XX.XX.XX$ [NC] 
RewriteRule ^(.*)$ http://www.justadomain.tld [R=301,L] 

也有在子文件夾UND .htaccess文件子文件夾的文件夾,但我希望此重寫規則可以在所有帳戶中的所有目錄中工作,無論是否存在.htaccess或不在每個文件中複製此規則。現有.htaccess文件中的規則應該繼續工作。

在此先感謝您的答案!

+1

恭喜,你已經完成了!這是.htaccess文件默認工作的方式。 :)它不工作,因爲它應該? –

+0

但是,如果在子文件夾中存在.htaccess文件,則此規則不起作用,只有文件夾的.htaccess文件中的規則才起作用。 – Fabian

+0

這很奇怪,那不應該。在sub-htaccess中的規則是否與您以任何方式顯示的規則相矛盾? –

回答

10

你需要添加下面一行到每個的.htaccess中的子文件夾,如果你想擁有重寫規則從將要執行父的.htaccess還有:

RewriteOptions inherit 

強制當前配置繼承父母的配置爲 。在每個虛擬服務器上下文中,這意味着地圖,主服務器的條件和規則被繼承。在每個目錄上下文中的 這意味着父目錄的.htaccess配置的條件和規則被繼承。

繼承自父範圍的規則應用於子範圍中指定的規則 之後。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions


或者 - 移動從的.htaccess你的 「全球性」 規則(S)爲虛擬主機方面(這只是如果你可以編輯服務器配置文件,當然)。

+0

非常感謝。但這意味着所有的父母規則都被採納了,我必須編輯每一個文件?另外:「從父範圍繼承的規則應用於在子範圍中指定的規則之後。」這意味着如果發生衝突,父母規則就會起作用,對吧? – Fabian

+2

1)是的,它將應用來自一個父文件夾的所有規則。要讓它應用來自所有父文件夾的規則,您將不得不編輯所有.htaccess文件(您在這個文件中是正確的)。 2)不一定 - 這完全取決於規則/衝突和整個重寫邏輯。但是,如果URL(或其他「主題」)保持不變,那麼父規則很可能會接管。 **只有一個適當的方法來了解它如何在你的設置上工作** - 用真實的例子在真實系統上測試它。 – LazyOne

+0

感謝您的詳細解答! (由於我自己的代表,不能給你+1代表..) – Fabian