Apache 2.4 <locationmatch> происходит до.htaccess

У меня есть следующие настройки в моей конфигурации Apache:

<VirtualHost *:80>
    <Directory "/var/www/site.com">
            Options +Indexes +FollowSymLinks +ExecCGI -MultiViews
            AllowOverride All
            DirectoryIndex /index.html /pages/new_homepage.php
            Order allow,deny
            allow from all
            Require all granted
    </Directory>
    <LocationMatch ^(.*\.php)$>
                ProxyPass fcgi://127.0.0.1:9000/var/www/site.com$1
    </LocationMatch>

</VirtualHost>

и это в файле.htaccess:

RewriteRule ^dir/somephp.php$ /pages/dir/somephp.php [L]

Я вижу, как исходный запрос передается в PHP-FPM, а не запрос ReWritten. Я проверил это, и часть ".php" сопоставляется. Другие переписывает без.php работают отлично.

Документы Apache 2.4 говорят, что "LocationMatch" должен обрабатываться последним и после директивы Directory. http://httpd.apache.org/docs/current/sections.html

Кто-нибудь еще видел такое поведение или есть какие-либо предложения, чтобы попробовать?

Я использую Centos 7 с Apache 2.4.6.

--update-- Ну, я в замешательстве, ProxyPass, вложенный в LocationMatch, имеет приоритет LocationMatch? Я включил неприятный обходной путь использования нескольких операторов LocationMatch:

    <LocationMatch ^(.*\.php)$>
           ProxyPass fcgi://127.0.0.1:9000/var/www/site.com$1
    </LocationMatch>
    <LocationMatch ^(/dir/some.*\.php)$>
            ProxyPass fcgi://127.0.0.1:9000/var/www/site.com/pages$1
    </LocationMatch>
    <LocationMatch ^(/dir2/some.php)$>
            ProxyPass fcgi://127.0.0.1:9000/var/www/site.com/pages$1
    </LocationMatch>

Тем не менее, я бы хотел выяснить, почему Locationmatch отправляет на сервер php до обработки.htaccess.

0 ответов

Другие вопросы по тегам