2012-09-12 91 views
0

我在我的htaccess文件如下:忽略htaccess的目錄及其子目錄

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(mailinglist)/.*$ - [L] 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

我基本上要,如果我在郵件列表目錄擊中最後一行刪除htaccess的。

這僅適用於/ mailinglist目錄根目錄中的項目。一旦我像/ mailinglist/w/1那樣更深入,就會打破最後的重寫規則。如果我位於/ mailinglist目錄中,如何阻止它處理最後一個重寫規則。

原因是我在該目錄中有一組不同的htaccess,我不希望這個htaccess來控制它。

+0

感謝Jon和Drew!我現在的問題是,當我在郵件列表目錄深入2個子目錄時,這個條件不再適用。我仍然在學習使用HTACCESS的REGEX,不確定要添加什麼才能識別許多子目錄。 – csteel

回答

0

嘗試:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^(mailinglist)/.*$ 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

我剛換了檢查mailinglist是一個的RewriteCond。如果URI不以mailinglist開頭,則條件只會重寫爲index.php。

+0

當我深入2個目錄,即'http:// www.example.com/mailinglist/w/1'時,它會碰到RewriteRule。如果它在郵件列表目錄中,我該如何防止它重擊那個RewriteRule? – csteel

0

的條件被應用到錯誤的規則,你需要換在你的規則:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^(mailinglist)/.*$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

條件只適用於緊隨其後的規則,所以2個!-f!-d條件被誤用的passthrough,而index.php規則缺少這些條件。