Cómo usar WordPress junto a Symfony mediante configuración de htaccess

Llevas varios meses desarrollando una aplicación web con Symfony, has entendido todos los conceptos, MVC, Routing, Symfony Rewrite… ahora toca tener un blog que hable de las maravillas de tu aplicación y a través de ella puedas atraer a tu público objetivo. Tu primera opción es delegar a los sabios e instalar un CMS, tal vez tus primeras opciones sean WordPress o Joomla. Cuando estas en plena faena te das cuenta que no es tan fácil como te habías imaginado, empiezas a buscar por todos los rincones de StackOverflow que línea concreta hará que tu htaccess no se queje. Tras mucho buscar sigues sin encontrar nada y cada vez te desesperas más porque no consigues hacer funcionar tu WordPress o Joomla y una idea nueva te viene a la cabeza, desarrollar tu propio CMS, intentas alejarla de tu cabeza porque no quieres pasar por ello cuando ya existen soluciones mejor programadas de lo que podrías hacer tu. Con esta línea temporal he intentado resumir lo que me ha pasado a mi durante la semana pasada y por fin he encontrado la solución.

 

Cómo hacer que WordPress y Symfony cohabiten juntos

En mi semana de investigación y desespero he visto muchas soluciones de todo tipo pero desgraciadamente no funcionaban, o por lo menos, yo al ser un manco no conseguía hacer funcionar en mi proyecto. He visto un par de Bundles interesantes como este para hacer un merge de las funcionalidades de WordPress y Symfony y utilizar ambas dos herramientas dentro del mismo proyecto. También he visto miles de configuraciones del fichero htaccess diferentes, creo que me salen las Regexp por las orejas y es que nunca se me han dado muy bien, siempre las he tenido atragantadísimas.

Dentro de un proyecto Symfony, la parte pública en la que están los controladores frontales es la carpeta /web, pues bien, dentro de la carpeta /web he creado el directorio /blog en el que se alojará toda la instalación de WordPress.

La configuración del fichero htaccess de la carpeta web es la siguiente

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

Y la configuración del fichero .htaccess del directorio blog es la siguiente:

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

Con esta configuración lo que estamos haciendo es que cada petición que hagamos a nuestra aplicación, sean los controladores frontales y el sistema de re escritura de symfony los que se encarguen de procesarla y servirla y que cuando queramos acceder a nuestro blog o a algún recurso contenido en el directorio /blog, que sean los controladores de WordPress los encargados de procesar la solicitud. Con estas configuraciones estamos delegando en dos actores diferentes.

Puede que no sea la mejor opción si nos ponemos muy puristas pero es la solución que a mi me ha funcionado.

Si estabais con el mismo problema que yo y habéis caído por casualidad en este blog, espero que os funcione a la perfección como a mi, en cualquier caso podéis utilizar los comentarios para sugerir otras opciones. Y por lo que a mi me respecta…

¡Hasta que volvamos a olernos!