Apache 2.4-如果条件优先

时间:2019-06-12 09:54:04

标签: apache apache2.4

我已经在不同文件中配置了301重写规则(基于url模式),并创建了一个规则文件来调用其他文件。我已经根据URL模式在规则文件中添加了If条件。但是我的If条件没有被正确调用,首先是If条件之外的规则被调用,然后先经过If条件。

<If "%{REQUEST_URI} =~ m#^/category1#i">
    Include conf.d/sites.d/example/301_redirections_category1.conf
</If>
<ElseIf "%{REQUEST_URI} =~ m#^/category2#i">
    Include conf.d/sites.d/example/301_redirections_category2.conf
</ElseIf>
<Else>
    Include conf.d/sites.d/example/301_redirections_vanity.conf
</Else>

我的虚拟主机看起来像:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule dispatcher_module modules/mod_dispatcher.so
<VirtualHost *:80>
    ServerName www.example.com

    RewriteEngine on

    Include conf.d/sites.d/example/301_redirections.conf
    Include conf.d/sites.d/example/rewrite.conf

    LogLevel alert rewrite:trace6
    <Directory />
        <IfModule disp_apache2.c>
            ModMimeUsePathInfo On
            SetHandler dispatcher-handler
        </IfModule>

        ErrorDocument 404 "/error/pagenotfound.html"
        ErrorDocument 500 "/error/errorpage.html"
        ErrorDocument 403 "/error/pagenotfound.html"

        Options FollowSymLinks
        AllowOverride None

        # Insert filter
        SetOutputFilter DEFLATE

        # Don't compress images
        SetEnvIfNoCase Request_URI \
        \.(?:gif|jpe?g|png)$ no-gzip dont-vary

        # Make sure proxies don't deliver the wrong content
        Header append Vary User-Agent env=!dont-vary
        # prevent clickjacking
        Header always append X-Frame-Options SAMEORIGIN
    </Directory>
</VirtualHost>

当我点击网址https://www.example.com/category2时,首先执行conf.d/sites.d/example/rewrite.conf的规则,然后调用我的配置文件conf.d/sites.d/example/301_redirections.conf

如果我在If-Else条件之前或之后添加任何规则,则会正确调用其他规则,然后If-Else阻止,因此问题仅在if阻止。

0 个答案:

没有答案