【问题标题】:How to prevent .htaccess redirect rules from cascading to sites held in sub-directories of the 'public_html' root?如何防止 .htaccess 重定向规则级联到“public_html”根目录下的站点?
【发布时间】:2017-05-27 04:58:50
【问题描述】:

基本上,我在 '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 参数/变量(特别是“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

提前感谢您的帮助。

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite


    【解决方案1】:

    你可以尝试用这个来包装你的规则:

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

    更新

    要包含子域和没有任何子域的根域(仅 jamesandersonjr.com):

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

    包含子域但不包含根域:

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

    这适用于任何级别的子域。如果您只希望允许单个级别的子域,则需要对其进行更新。

    作为参考,documentation is here

    【讨论】:

    • 嘿 SuperDuperApps,请避开这些句号,以便我批准您的回答。谢谢!
    • 它不需要转义句点。这是一个字符串比较,而不是正则表达式。很高兴它对你有用。
    • 现在,我如何包含 jamesandersonjr.com 的子域,同时仍然排除根目录下的其他网站?
    • 现在你需要一个正则表达式 :) 我用一种方法更新了答案。
    • 我正在尝试使用它将所有 Http:// 请求重定向到 https:// 使用 RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} 但是你给我的 if 条件是抛出错误 500。:-(跨度>
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 2013-09-30
    • 2014-12-16
    • 1970-01-01
    • 2023-04-04
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多