Apache 2.4 - если условие приоритет - PullRequest
0 голосов
/ 12 июня 2019

Я настроил свои правила перезаписи 301 в разных файлах (на основе шаблонов URL) и создал файл правил для вызова других файлов.Я добавил If условия в мой файл правил на основе шаблонов URL.Но мое условие 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>

Когда я нажимаю URL, скажем, https://www.example.com/category2, сначала выполняются правила conf.d/sites.d/example/rewrite.conf, затем вызывается мой файл конфигурации conf.d/sites.d/example/301_redirections.conf.

Если я добавляю какое-либо правило до или после If-Elseпри условии, что дополнительные правила вызываются должным образом, а затем блокируется If-Else, так что проблема в том, что только в блоке.

...