【问题标题】:Stop virtualhost rewrite rules executing if a rule was matched in the global config如果规则在全局配置中匹配,则停止执行虚拟主机重写规则
【发布时间】:2018-04-26 04:47:15
【问题描述】:

我有以下设置。 Apache 为每个站点运行一个单独的 VirtualHost 文件。 它们中的每一个都有自己的一组重写规则,例如 http 到 https 都运行良好。

我们希望发生的是,从全局配置中,我们需要能够检查请求是否针对特定子目录。如果是,那么我们应该允许此请求按原样处理,但此时我们不希望单独的虚拟主机文件重写规则启动。因此允许此目录在非 https 连接上提供服务,而不是重定向到 https .

我已经设置了重写规则,并且可以匹配目录并重定向到外部 url,如果它与显示其继承的全局匹配,但如果我尝试只允许它通过虚拟主机重写启动并重定向.

我尝试过使用 L 和 END,但这也不起作用。 有没有办法在不编辑已经配置的虚拟主机文件的情况下实现这一点?

主要的httpd配置条目

<Directory "/www">
Options Indexes Includes FollowSymLinks MultiViews
        AllowOverride All
        allow from all
        Order allow,deny
        Require all granted

RewriteEngine On
RewriteOptions InheritDownBefore

RewriteCond %{REQUEST_URI} ^/sub_directory/$ [NC]
RewriteRule ^(.*) $1  [L,END]
#RewriteRule ^(.*) -  [L,END]
#RewriteRule ^(.*) http://www.google.com  [L,END]  # This does get triggered

</Directory>

示例虚拟主机文件。

<VirtualHost *:80>
ServerName urlone.com
ServerAlias urltwo.com

DocumentRoot /www/

RewriteEngine On

# redirect to https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://urlone.com$1 [R=301,L]

</VirtualHost>

所以如果我访问 urlone.com 它应该重定向到 https://urlone.com 但如果我访问 urlone.com/sub_directory 它需要不允许重定向到 https。

我希望这对某人有意义,并提前感谢您的帮助。

【问题讨论】:

    标签: apache redirect mod-rewrite url-rewriting virtualhost


    【解决方案1】:

    在全局 httpd.conf 中:

    RewriteEngine On
    RewriteOptions InheritDownBefore
    RewriteCond %{REQUEST_URI} ^/sub_directory$ [NC]
    RewriteRule ^ - [E=PATH_MATCHED:true]
    

    (如果需要,您可以在上面的规则中添加额外的规则,或额外的标志)

    在 virtual_host.conf 中

    RewriteCond %{ENV:PATH_MATCHED} !=true
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://urlone.com%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 感谢您的建议,问题是我们试图避免必须独立更新虚拟主机文件,因为有很多。如果我们无法在不进行编辑的情况下找到其他方法,那么这可能是不合适的方法。
    • 如果在您的 http.conf 中您只是将 RewriteRule ^(.*) $1 [L,END] 更改为 RewriteRule ^ - [L,END] 会怎样
    • 恐怕不走运,用 RewriteRule ^ - [L,END] 代替它仍然继续处理虚拟主机重定向到 https。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2018-02-01
    • 2015-09-24
    • 1970-01-01
    相关资源
    最近更新 更多