1 Pregunta: Apache RewriteRule in htaccess - Las rutas están rotas

pregunta creada en Tue, Jan 16, 2018 12:00 AM

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:

Raíz de acceso:

<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 ha encontrado ninguna ruta para "GET /"

¿Hay alguna solución simple para esto?

    
9
  1. ¿Hay alguna limitación a lo que puedes cambiar? Por ejemplo, si el proveedor de alojamiento web no le da acceso SSH o no permite cambios en la configuración o los módulos de Apache subyacentes, o si no puede cambiar la estructura de directorios de su proyecto.
    2018-01-21 14: 47: 57Z
  2. No tengo acceso de shell. Tengo una solución con /web en urls, pero quiero deshacerme de eso con una solución simple. Prefiero no romper la estructura de directorios de Symfony
    2018-01-21 16: 10: 00Z
  3. Si tiene al menos algún tipo de herramienta de administración, ¿podría apuntar un subdominio a la carpeta web?
    2018-01-22 14: 43: 17Z
1 Respuestas                              1                         

Esta solución requiere acceso ssh.

Abandonar todas las soluciones basadas en las reglas de htaccess. Intente utilizar el enlace simbólico en lugar de comando ln -s

La mejor idea aquí es poner cada proyecto en una carpeta separada en otra carpeta donde su dominio apunta (llamémoslo 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) - incluye wp crear 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 (de Symfony). He visto soluciones como esta (se usa al crear una nueva aplicación sobre un sistema heredado). Pero esto es más problemático que el enlace simbólico (puede ver la idea aquí https://www.enotogorsk.ru/en/2014/07/22/symfony-legacy-bridge/)

    
1
2018-01-19 12: 26: 26Z
  1. Por favor, use claramente la estructura de directorio estándar (como la mía). No entiendo tu notación
    2018-01-23 06: 39: 27Z
fuente colocada aquí