2017-05-27 27 views
1

基本上,我在我的主要网站(http://www.jamesandersonjr.com)的“public_html”目录(Apache服务器)的根目录中有一些子目录。主网站文件直接位于'public_html'根目录中,而其他网站(具有自己的独立域名)则位于下的子文件夹/子目录的根目录下。如何防止.htaccess将规则从级联重定向到位于'public_html'根目录的子目录中的网站?

我遇到的问题是我的.htaccess文件(在'public_html'的根目录中)的一些规则是级联下来,影响其他网站,在上述子目录(因此,他们自己单独网站)。下面是规则:

RedirectMatch 301 "^\/facebook\/?$" "/facebook.php" 
RedirectMatch 301 "^\/twitter\/?$" "/twitter.php" 
RedirectMatch 301 "^\/youtube\/?$" "/youtube.php" 
RedirectMatch 301 "^\/bug_?report\/?$" "/bug_report.php" 

RedirectMatch 301 "^\/bugreport\.(php|html?)(\?)?$" "/bug_report.php" 

这些规则.htaccess文件中,在我的主要网站:http://www.jamesandersonjr.com 但在第一次瞒着我,他们也影响到另一个网站,是在一个子目录,根目录。

如何防止这种“级联”的发生,或者如何重写规则以仅包含与主网站相关的路径(在上面的代码中):http://www.jamesandersonjr.com,而不是子文件夹/子目录呢?

注意:在完整代码重写的情况下,我需要能够保留url参数/变量(特别是'GET')(尤其是在上面的代码中的最后一条规则中)。例如:

http://www.jamesandersonjr.com/bugreport.php?page_domain=http://www.example.com

自动变为:提前

http://www.jamesandersonjr.com/bug_report.php?page_domain=http://www.example.com

感谢你的帮助。

回答

2

你可以试试这个包裹您的规则:

<If "%{HTTP_HOST} == 'www.jamesandersonjr.com'"> 
    ... 
</If> 

更新

要包括子域和根域没有任何的子域(只是jamesandersonjr.com):

<If "%{HTTP_HOST} =~ /(?:^|\.)jamesandersonjr\.com$/"> 
    ... 
</If> 

要包含子域但不包含根域:

<If "%{HTTP_HOST} =~ /\.jamesandersonjr\.com$/"> 
    ... 
</If> 

这是子域到任何级别。如果您只希望允许单个级别的子域名,则需要更新它。

供参考,documentation is here

+0

嘿SuperDuperApps,请逃避那些时期,所以我可以批准你的答案。谢谢! –

+1

它不需要转义期。这是一个字符串比较,而不是正则表达式。很高兴它对你有效。 – SuperDuperApps

+0

现在,我将如何*包含'jamesandersonjr.com'的子域,而仍然*排除其他网站在根目录的子目录中? –

相关问题