symfony2 règles de réécriture.htaccess app.php
j'ai envoyé mon projet symfony2 à server grove. La page principale des charges, mais tous les liens sont rompus. J'ai essayé d'ajouter app.php à l'adresse web. Il a fait un travail, mais:
j'ai des routes comme celle-ci:
www.something.com/app.php/something
je veux:
www.something.com/something.
j'ai lu, et je devrais mettre quelques règles de réécriture sur le .htaccess.
j'ai trouvé ces règles, mais elles ne le font pas semblent fonctionner:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
5 réponses
Essayez ceci dans votre .fichier htaccess (à l'intérieur du répertoire web):
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^app_dev.php - [L]
RewriteRule ^app.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ /app.php [QSA,L]
RewriteRule ^(.*)$ /app_dev.php [QSA,L]
</IfModule>
pour améliorer la réponse de whistlergreg, j'ai ajouté une ligne pour que le dossier bundles ne soit pas cassé. Cela permettra de s'assurer des ressources externes telles que les images ne sont pas rompus.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^/web/app_dev.php - [L]
RewriteRule ^/web/app.php - [L]
# Fix the bundles folder
RewriteRule ^bundles/(.*)$ /web/bundles/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ /web/app.php [QSA,L]
RewriteRule ^(.*)$ /web/app_dev.php [QSA,L]
</IfModule>
Vous n'avez pas activé le module de réécriture. Ce code est exécuté si mod_rewrite.c est activé. Vous devez seulement activer mod_rewrite dans apache2. http://www.unixmen.com/how-to-enable-and-disable-apache-modules/
par exemple dans Ubuntu:
sudo a2enmod rewrite
sudo service apache2 restart
Aussi, ... rappelez-vous de décommenter (si commenté) la configuration d'apache:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
MacOsX
/private/etc/apache2/httpd.conf
Vous pouvez essayer de donner le chemin complet de vos actifs(url complète). J'ai eu le même problème lorsque j'ai déployé ma première application symfony
Mon répertoire racine (dossier public_html dans la plupart des cas).fichier htaccess ressemble à ceci
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]