44

I uploaded my symfony2 project to server grove. The main page loads, but all the links are broken. I tried adding app.php to the web address. It did work, but:

I have routes like this one:

www.something.com/app.php/something

I want them to be:

www.something.com/something.

I've been reading, and I should put some rewrite rules on the .htaccess.

I found these rules, but they don't seem to work:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
Stephan Muller
  • 27,018
  • 16
  • 85
  • 126
Francisco Ochoa
  • 1,538
  • 4
  • 19
  • 43

5 Answers5

58

Try this in your .htaccess file (inside the web directory):

<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>
greg
  • 6,853
  • 15
  • 58
  • 71
  • I added it but when I went to www.something.com, it says that there was an error... – Francisco Ochoa Jun 22 '12 at 02:54
  • did you remove everything else in the file? – greg Jun 22 '12 at 03:09
  • 2
    If anyone else gets the 400 bad request sent error from apache try adding a slash to the rewrite i.e. RewriteRule ^(.*)$ /app_dev.php [QSA,L] – concept Mar 14 '14 at 06:10
  • this suggestions just costed me alot of time, getting an error, Options not allowed here – blamb Apr 28 '15 at 01:28
  • When I deploy to production (commenting RewriteRule ^(.*)$ /app_dev.php [QSA,L] and uncommenting RewriteRule ^(.*)$ /app.php [QSA,L]) it gives me an error. If I leave it like this solution, it works, but it redirects to app_dev.php :( Any help? – InsaurraldeAP Jan 27 '16 at 14:29
26

To improve upon whistlergreg's answer, I added a line so that the bundles folder is not broken. This will make sure external resources such as images are not broken.

<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/$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]
</IfModule>
JimTheDev
  • 3,469
  • 1
  • 23
  • 26
4

You don't have enabled rewrite module. This code is executed if mod_rewrite.c is enabled. You must only enable mod_rewrite in apache2. http://www.unixmen.com/how-to-enable-and-disable-apache-modules/

For example in Ubuntu:

sudo a2enmod rewrite
sudo service apache2 restart
Akairis
  • 407
  • 2
  • 11
0

Also, ... remember to uncomment (if commented) the apache configuration:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

MacOsX

/private/etc/apache2/httpd.conf

sensorario
  • 20,262
  • 30
  • 97
  • 159
0

You can try giving the full path to your assets(full url). I had the same issue when I deployed my first symfony application

My root directory (public_html folder in most of the case).htaccess file looks like this

Options +FollowSymLinks +ExecCGI

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC]
kiran Mohan
  • 68
  • 1
  • 3