PHP-FPM não está funcionando com htaccess

PHP-FPM não está funcionando com htaccess

Eu tenho um 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>

E um .htaccessarquivo localizado em /var/www/html/example.com/mysub/.htaccess. Dentro do .htaccessarquivo, eu tenho:

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]

O problema:Posso navegar example.comperfeitamente no meu navegador. No entanto, se eu tentar ir example.com/mysub, ele me mostrará example.com/index.phpem vez de example.com/mysub/index.php.

Presumo que isso significa $1que VirtualHost RewriteRule não contém o mysubprefixo do diretório? Por que é que? Achei que talvez o RewriteBase (sendo diferente) em ambos os arquivos fosse o problema, mas modificá-lo não alterou a saída.

Acredito que o problema esteja no mod_rewrite do VirtualHost. Em um servidor diferente (Centos 5), o site funciona perfeitamente (embora eu não esteja usando php-fpm). Eu preferiria não modificar o htaccess, pois faz parte do código de terceiros.

PHP5.4; CentOS 7; Apache 2.4

EDITAR:Funciona quando movo o htaccess Rewrites para o arquivo VirtualHost e modifico os caminhos para trabalhar com uma base de /. Isso não é ideal, já que o código de terceiros pode ser atualizado a qualquer momento com um htaccess modificado.

Responder1

Mover o Rewrite para fora da diretiva Directory do VirtualHost resolveu o problema.

<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>

informação relacionada