2011-11-29 83 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