PHP-FPM no funciona con htaccess

PHP-FPM no funciona con htaccess

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

Y un .htaccessarchivo ubicado en /var/www/html/example.com/mysub/.htaccess. Dentro del .htaccessarchivo tengo:

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]

La cuestión:Puedo navegar example.comperfectamente en mi navegador. Sin embargo, si intento ir a example.com/mysub, me muestra example.com/index.phpen lugar de example.com/mysub/index.php.

Supongo que esto significa $1que VirtualHost RewriteRule no contiene el mysubprefijo de directorio. ¿Porqué es eso? Pensé que tal vez el problema era RewriteBase (que era diferente) en ambos archivos, pero modificarlo no cambió el resultado.

Creo que el problema está en VirtualHost mod_rewrite. En un servidor diferente (Centos 5), el sitio web funciona perfectamente (aunque no uso php-fpm). Preferiría no modificar htaccess ya que es parte del código de terceros.

PHP 5.4; CentOS 7; Apache 2.4

EDITAR:Funciona cuando muevo las reescrituras de htaccess al archivo VirtualHost y modifico las rutas para que funcionen con una base de /. Sin embargo, esto no es ideal ya que el código de terceros se puede actualizar en cualquier momento con un htaccess modificado.

Respuesta1

Mover la Reescritura fuera de la directiva Directorio de VirtualHost resolvió el 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>

información relacionada