基本上,我在'public_html‘目录的根目录(一个Apache服务器)中有一些子目录,我在其中保存了我的主站点( http://www.jamesandersonjr.com )。主网站文件直接位于“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参数/变量(尤指p)。(尤指)(尤指)在最后一个规则中,在上面的代码中)。例如:
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
提前感谢您的帮助。
发布于 2017-05-27 06:06:06
您可以尝试用以下方法包装您的规则:
<If "%{HTTP_HOST} == 'www.jamesandersonjr.com'">
...
</If>更新
若要包含子域和根域而不包含任何子域(只有jamesandersonjr.com),请执行以下操作:
<If "%{HTTP_HOST} =~ /(?:^|\.)jamesandersonjr\.com$/">
...
</If>若要包含子域但不包含根域,请执行以下操作:
<If "%{HTTP_HOST} =~ /\.jamesandersonjr\.com$/">
...
</If>这是用于任何级别的子域。如果您只希望允许一个级别的子域,则需要对其进行更新。
作为参考,文件在这里。
https://stackoverflow.com/questions/44213116
复制相似问题