I have been following Symfony 4 documentation as to how to configure a web server.
https://symfony.com/doc/current/setup/web_server_configuration.html
My .conf file in my apache 2.4 configuration is exactly as described in their documentation. I’m copying part of it here :
<Directory /var/www/project/public>
AllowOverride None
Require all granted
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
Going to my platform, everything works fine but as soon as I’m going to any page, it shows a 404 error. If I add index.php in the url it works fine. Could you help me figure out what is going on?
For example: When I’m on http://myplatform.com/
I can save an email address on this page. If I go to http://myplatform.com/index.php/saveEmail it works, but from my page, my links redirects me to http://myplatform.com/saveEmail and it doesn’t work.
If i go to http://myplatform.com/index.php then everything works fine.
How to I remove index.php from the url ?
Thanks!
I do not know about Symfony. But it should work with all apache2 and php project.
First you need to do two things:
You need to check if php rewrite module is enabled. you can do it with phpinfo()
. Write this in a file info.php
and open in browser: http://localhost/info.php
Now search for mod_rewrite
. If you see mod_rewrite
in this page that means, mod_rewrite
is enabled.
mod_rewrite
is not enabled, enable it. I enabled in in ubuntu 18.04 for apache with this command: $ sudo a2enmod rewrite
. Then restart apache2 $ systemctl restart apache2
mod_rewrite
is enabled, then other configuration will work.Then add AllowOverride All
in .conf
file:
<Directory /var/www/project/public>
AllowOverride All
</Directory>
Then add .htaccess
file in you project root directory.
<IfModule mod_rewrite.c>
RewriteEngine On
# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>
Note: Try adding .htaccess
file in /var/www/project/.htaccess
or in /var/www/project/public/.htaccess
. Not sure what will work.