Pregunta Apache RewriteRule en htaccess - Las rutas están rotas


Tengo una estructura simple:

Root
|-- [app] (Symfony Application)
|    |-- [app]
|    |-- [bin]
|    |-- [src]
|    |-- [vendor]
|    |-- [web]
|         |-- .htaccess (Symfony htaccess)
|
|-- [wp-admin]
|-- [wp-content]
|-- [wp-include]
|-- .htaccess (Root htaccess)

Necesito el siguiente mapeo:

http://example.com      ==> Wordpress 
http://example.com/app  ==> Symfony Application

Esto es lo que tengo:

Root htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^app(.*)$ app/web/$1 [L,QSA]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Symfony htaccess:

DirectoryIndex app.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    RewriteRule ^ %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /app.php/
    </IfModule>
</IfModule>

Problema:

El problema es que las rutas de Symfony no se resuelven:

No se encontró ruta para "GET /"

¿Hay alguna solución simple para esto?


9
2018-01-13 15:16


origen


Respuestas:


Esta solución requiere acceso ssh.

Abandone todas las soluciones basadas en las reglas de htaccess. Intenta usar un enlace simbólico en su lugar comando ln -s 

La mejor idea es colocar cada proyecto en una carpeta separada en la carpeta otuside a la que apunta su dominio (nombre aquí como public_html)

ROOT
|
-[Symfony]
-[WP]
-[public_html] (folder where your domain is pointing) 

y ahora - eliminar public_html - agregar enlace simbólico a wp (con nombre de html público) - incluir wp crear un enlace simbólico a Symfony / web

ROOT
|
-[Symfony]
-[WP]
-- [app]  (symbolic link to symfony/web)
-[public_html] (symbolic link to WP ) 

Como alternativa, creo que es posible redirigir la solicitud de Symfony a wp y luego enviar la respuesta de wp al usuario (desde Symfony). Vi soluciones como esta (se usa cuando construyes una nueva aplicación sobre el sistema heredado). Pero esto es más problemático que el enlace simbólico (puedes ver la idea aquí https://www.enotogorsk.ru/en/2014/07/22/symfony-legacy-bridge/)


1
2018-01-19 12:26