regole di riscrittura symfony2 .htaccess app.php

Ho caricato il mio progetto symfony2 su server boschetto. La pagina principale viene caricata, ma tutti i collegamenti sono interrotti. Ho provato ad aggiungere app.php all’indirizzo web. Ha funzionato, ma:

Ho percorsi come questo:

www.something.com/app.php/something

Voglio che siano:

www.something.com/something.

Ho letto e dovrei mettere alcune regole di riscrittura su .htaccess.

Ho trovato queste regole, ma non sembrano funzionare:

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

Prova questo nel tuo file .htaccess (all’interno della directory web):

  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]  

Per migliorare la risposta di whistlergreg, ho aggiunto una riga in modo tale che la cartella dei pacchetti non venga interrotta. Ciò assicurerà che le risorse esterne come le immagini non siano rotte.

  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/$1 [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]  

Non hai abilitato il modulo di riscrittura. Questo codice viene eseguito se mod_rewrite.c è abilitato. Devi abilitare mod_rewrite solo in apache2. http://www.unixmen.com/how-to-enable-and-disable-apache-modules/

Ad esempio in Ubuntu:

 sudo a2enmod rewrite sudo service apache2 restart 

Inoltre, … ricorda di decommentare (se commentato) la configurazione di apache:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

MacOsX

/private/etc/apache2/httpd.conf

Puoi provare a dare il percorso completo alle tue risorse (URL completo). Ho avuto lo stesso problema quando ho distribuito la mia prima applicazione symfony

La mia directory principale (cartella public_html nella maggior parte dei casi) .htaccess file ha questo aspetto

 Options +FollowSymLinks +ExecCGI RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]