Blog de Web Omega

Intégrer facilement un blog à votre application Symfony – WordPress, Drupal, Joomla ….

Symfony + Wordpress

Symfony + Wordpress

Vous avez sûrement besoin d’un blog pour faire vivre votre site internet développé avec Symfony. Symfony 2 et son système de Bundle permet d’intégrer des blogs directement dans votre application sans passer par des CMS de gestion de contenus mais ceux-ci sont loin d’être aussi poussés que WordPress ou autre.

Nous allons donc voir ici comment faire pour intégrer un tel système dans votre application Symfony.

1. Première Solution

La première solution possible pourrait être de passer par des sous-domaines du type http://blog.monsite.com mais cette solution est plutôt handicapante pour le référencement. En effet, un sous-domaine est interprété comme un site à part entière par les moteurs de recherche et votre site ne profitera pas du contenu de votre blog pour son référencement.

2. Deuxième Solution

La deuxième solution serait de passer au travers de l’Url Rewriting imposé par Symfony afin d’avoir un blog situé a l’adresse http://www.monsite.com/blog, C’est cette solution que nous choisirons.

Comme vous le savez sûrement déjà, Symfony intègre une gestion du routing dans vos application et il est donc assez difficile d’obtenir l’url voulue pour une fonctionnalité externe à Symfony.

Toute application Symfony dispose d’un dossier « web » qui va contenir tous les fichier disponibles à l’utilisateur.

Placez dans celui-ci le dossier blog qui va contenir tous les fichiers de votre CMS.

Ouvrez ensuite votre fichier web/.htaccess qui devrait ressembler à ceci :

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

Puis ajoutez-y la ligne suivante, juste après l’activation de l’Url Rewriting :

[php]
RewriteRule ^blog/(.*)$ blog/$1 [PT]
[/php]

Votre fichier .htaccess devrait maintenant ressembler à celui-ci :

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

Le flag [PT] signifie Pass Through, en effet, toutes les requêtes commençant par http://www.monsite.com/blog passeront au travers des traitements de l’Url Rewriting et seront redirigées vers le dossier blog présent dans le dossier web, permettant ainsi à votre CMS de fonctionner correctement avec ses propres règles d’Url Rewriting.

Cette solution à été testée et fonctionne correctement sur Symfony 2 et Symfony 1.4.

Steeve Audoli – Web Developer