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
Etape 2 : Comment partager les profils utilisateurs et les sessions ?
Je pense avoir une solution en utilisant la directive prepend dans apache.
J’ai détaillé l’exemple ici, http://blog.prestaconcept.net/2012/08/03/integrer-une-application-php-dans-un-projet-symfony-2.html
Je serai ravi de voir d’autres possibilités peut être plus élégantes.
Bonjour,
Nous nous pencherons sur cet aspect dans un prochain article.
Bonjour,
J’aimerai faire le contraire. Tout ce qui ne commence pas par quelque chose de connu (par exemple /app) soit redirigé dans le wordpress (qui est par exemple en /wp) mais que le répertoire wp n’apparaisse pas dans l’url. En résumé que http://www.monsite.com atterrisse dans le wp et que http://www.monsite.com/app soit mon appli symfony et tout ca uniquement avec des rewrite… Est-ce possible???
Merci
Pour cela je pense qu’il faudrait faire l’inverse, mettre l’appli Symfony a la racine du blog et faire le même processus que celui présenté dans l’article pour laisser passer tout ce qui commence par /app
Merci pour cette info. J’utilise régulièrement WordPress d’une part, et Symfony2 d’autre part. Je vais essayer cette méthode, ça devrait me faire gagner du temps !