PHP-FPM не работает с htaccess

PHP-FPM не работает с htaccess

У меня есть VirtualHost:

<VirtualHost *:80>
DocumentRoot "/var/www/html/example.com"
ServerName example.com
ServerAlias *.example.com
<Directory "/var/www/html/example.com">
    Require all granted
    Options -Indexes +FollowSymLinks -ExecCGI
    AllowOverride All
    DirectoryIndex index.php
    <IfModule mod_proxy_fcgi.c>
        RewriteEngine On
        RewriteBase /
        RewriteOptions InheritBefore        
        RewriteCond %{REQUEST_FILENAME} -f
        RewriteRule ^([^\.]+\.php)$ fcgi://127.0.0.1:9000/var/www/html/example.com/$1 [L,P]
    </IfModule>
</Directory>
</VirtualHost>

И .htaccessфайл, расположенный по адресу /var/www/html/example.com/mysub/.htaccess. Внутри файла .htaccessу меня есть:

Options -MultiViews
RewriteEngine On
RewriteBase /mysub

Options +FollowSymLinks

RewriteCond $1 !^(index\.php|assets|css|js|favicon\.ico|robots\.txt)

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Проблема:Я могу перейти example.comв своем браузере без проблем. Однако, если я попытаюсь перейти в example.com/mysub, он покажет мне example.com/index.phpвместо example.com/mysub/index.php.

Я предполагаю, что это означает, что $1в VirtualHost RewriteRule не содержится mysubпрефикс каталога? Почему так? Я думал, что проблема в RewriteBase (которая отличается) в обоих файлах, но изменение ее не изменило вывод.

Я считаю, что проблема в VirtualHost mod_rewrite. На другом сервере (Centos 5) сайт работает отлично (хотя я не использую php-fpm). Я бы предпочел не изменять htaccess, так как он является частью стороннего кода.

PHP 5.4; CentOS 7; Apache 2.4

РЕДАКТИРОВАТЬ:Это работает, когда я перемещаю htaccess Rewrites в файл VirtualHost и изменяю пути для работы с базой /. Это не идеально, поскольку сторонний код может быть обновлен в любое время с помощью измененного htaccess.

решение1

Перемещение Rewrite за пределы директивы Directory VirtualHost решило проблему.

<VirtualHost *:80>
DocumentRoot "/var/www/html/example.com"
ServerName example.com
ServerAlias *.example.com
<Directory "/var/www/html/example.com">
    Require all granted
    Options -Indexes -MultiViews +FollowSymLinks
    AllowOverride All
</Directory>
RewriteEngine On
RewriteOptions InheritBefore

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond $1 ^(.*\.php(/.*)?)$
RewriteRule ^(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1 [L,P]
</VirtualHost>

Связанный контент