防止执行父文件夹的.htaccess

例如,我在同一个域上有两个不同的站点:
首先在根目录http://example.com/
子文件夹中的第二个网站http://example.com/site2/
每个站点都有他自己的.htaccess
当我进入第二个网站( http://example.com/site2/ ),在mod_rewrite的日志中,我看到apache试图执行.htaccess的第一个网站( http://example.com/ )。
那么,问题是如何防止呢? 谢谢

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

继承

这会强制当前配置继承父级的配置。 在每个虚拟服务器上下文中,这意味着主服务器的地图,条件和规则被继承。 在每个目录上下文中,这意味着父目录的.htaccess配置的条件和规则被继承。

Rules inherited from the parent scope are applied after rules specified in the child scope.

虽然您无法停止执行http://example.com中的.htaccess

您可以在http://example.com/site2/中放置另一个.htaccess,并且在此创建的任何规则将覆盖父文件夹的.htaccess中的规则将在此处执行,但不会在父文件夹中执行。

例如,我最近有一个案例,我正在重写我的主站点的任何非www版本,我们将其称为example.com到www.example.com

造成这个问题的原因是任何人去我的第二个网站,即使用户输入site2.com或www.site2.com,我们将调用site2.com实际上将用户重定向到www.example.com/site2.com/或http://www.site2.com在他们的浏览器的地址输入

我必须要做的是修复2个.htaccess文件,首先在根http://www.example.com,然后在位于http://www.example.com/site2的单独的.htaccess中。 COM /

1) http://www.example.com .htaccess:

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

2) http://www.site2.comhttp://www.example.com/site2.com/).htaccess(这也强制site2.com的www版本):

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.site2\.com$ [NC] RewriteRule ^(.*)$ http://www.site2.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^site2\.example\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.example\.com/site2\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.site2\.example\.com$ RewriteRule ^/?$ "http\:\/\/www\.site2\.com\/" [R=301,L] 

随意撕开我的正则表达式,我绝不是一个正则表达式的主人。 我也意识到,这可以创建2个或更多的额外的重定向,但这是我可以得到这个工作的唯一方法,无需通过主机重新分配我的DocumentRoot …如果您的主机可以做到这可能是一个更好的选择,我会/不会…