2011-11-28 26 views
0

我想爲...Apache重寫異常的索引,但不是第二個和更深的索引?

HTTP異常://本地主機/

...而改寫下面的所有目錄的索引...

的http://本地主機/ directory1中/

的http://本地主機/ directory2/

通過具有下面的空項目(它是字符(之間的第一項|在第三行)它創建所有索引異常所以怎麼能我製造th e例外不適用於使用.htaccess這個副本的localhost /本身?

HTTP://localhost/.htaccess

RewriteEngine on 
RewriteRule ^(|directory2/|directory2/) - [L] 
RewriteRule !\.(css|xhtml|xml|zip)$ rewrite.php 

......我無法與服務器配置混亂。另外這個問題不是重定向相關的。

回答

0

此規則使根索引例外。由於^(^ =開頭爲)和$($ =結尾)之間沒有任何內容,因此請求的URI與http:// localhost /完全匹配。有[空間] index.php(或更改擴展到你想要的)強制文件重寫爲自己。它似乎沒有循環。

RewriteRule ^$ index.php [QSA] 
1

嘗試使用RewriteCond來匹配您的目錄,然後將RewriteRule應用於任何匹配的內容。

編輯:另外,我認爲你的!行可能會導致一些問題。我與rewrite rule tester測試和調整我的建議的修復,看起來像這樣:

RewriteCond %{REQUEST_URI} ^/(directory1|directory2)/ 
RewriteRule .(css|xhtml|xml|zip)$ - [L] 
RewriteRule .* rewrite.php 

這通常是怎麼搭配的東西 - 如果你有一些事情你不想處理,與它們匹配並停止處理規則與[L]指令一起,然後繼續其他任何事情。

+0

我試過RewriteCond%{REQUEST_URI}!=「/」和RewriteCond%{REQUEST_URI}!=「」沒​​有成功。 – John

+0

我剛纔修改了我的答案,希望它有幫助。 – muffinista

+0

你很親密,它幫助我達到這個目標:RewriteCond%{REQUEST_URI}!。* /(管理員|博客|論壇)所以+1並接受,謝謝! – John