2011-11-29 86 views
6

的設置阿帕奇重寫異常不包括特定目錄

我的設置是有有雖然不同的內容類似結構的兩個或多個站點共享資源。在示例...

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

的http://本地主機/站點2/

有兩種類型的重寫,CMS內容(即呼應非常簡單,只是內容到頁面)和特殊模塊(例如博客軟件模塊),其中我有用於更具體地處理來自數據庫的內容的軟件。

所以對於博客第一重寫規則可確保該博客模塊處理博客請求....

的http://本地主機/ site1的/博客/ *

的http://本地主機/站點2 /博客/ *

...使用位於博客模塊軟件...

的http://本地主機/博客/

的CMS重寫規則旨在爲h andle非特定模塊的請求......

的http://本地主機/ site1的/ *

的http://本地主機/站點2/my_page.html *

...使用CMS軟件改寫位於...

的http://本地主機/ rewrite.php

的問題

的博客模塊和CMS模塊重寫衝突。我試圖使用以下規則進行例外。這是我的代碼...

RewriteEngine on 
RewriteCond %{REQUEST_URI} !\.js$ 
RewriteRule .*/blog(.+) blog$1 [QSA] 
RewriteRule !.*/(admin|blog|forums)(.+)$ rewrite.php 

最後一條規則實際上不起作用。有了這個代碼,如果我訪問..

的http://本地主機/ site1的/博客/ *

的http://本地主機/站點2 /博客/ *

...任何博客(或管理或論壇)任何網站的URL仍被重寫爲與localhost/rewrite.php一起使用。

那麼,如何調整最後規則,符合以下條件,請...

1)第一個目錄(在本地主機/ site1的/博客站點1或站點2)保持動態的,所以我可以添加第三如果我想在不需要重新調整代碼的情況下在這方面有任何理由。 2.)博客(或管理員或論壇)索引(例如blog /,forums /,admin /)由其自己的模塊以及這些目錄內的任何內容(例如admin/1,admin/test.html),無論HTTP代碼是200,404等

3.)任何不在最後一個規則的例外列表中的URL都由rewrite.php處理(不管HTTP代碼是200,404等)。

4.)localhost/site1/blog /不由rewrite.php處理,localhost/site1/random_path不由博客模塊重寫。

我會很樂意快速回復任何進一步的說明。

回答

6

感謝之前的RewriteCond,有人寫道,我改編了它,它效果很好!

請注意,如果有人決定使用此代碼,條件顯然只在模塊的特定重寫規則(管理員,博客,論壇)之後工作,儘管在CMS rewrite.php規則之前。

我很樂意兌現任何積極的評論。

RewriteEngine on 
RewriteCond %{REQUEST_URI} !\.(css|js|zip)$ 

RewriteRule .*/admin(.+) admin$1 [QSA] 
RewriteRule .*/blog(.+) blog$1 [QSA] 
RewriteRule .*/forums(.+) forums$1 [QSA] 

#individual... 
RewriteCond %{REQUEST_URI} !.*/admin 
RewriteCond %{REQUEST_URI} !.*/blog 
RewriteCond %{REQUEST_URI} !.*/forums 

#condensed... 
RewriteCond %{REQUEST_URI} !.*/(admin|blog|forums) 

RewriteRule !\.(css|js|zip)$ rewrite.php