I want to remove index.php
from my URL after query params.
This is my URL:
http://127.0.0.1/user/report?user=USERNAME
I have removed query params and convert it into pretty URL using:
RewriteCond %{QUERY_STRING} !user=
RewriteRule ^([a-zA-Z0-9\-]+)/(.*)$ $2?user=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-]+)$ ?user=$1 [L,QSA]
Now, my URL looks like this:
http://127.0.0.1/user/report/USERNAME
So all the requests to this URL will point to the entry script of my project i.e. web/index.php
.
When I use below routes to get data, it works:
http://127.0.0.1/user/report/Default/index.php/api/registration/user-registrations/
But when I remove index.php
from URL and access it like below, it throws 404:
http://127.0.0.1/user/report/Default/api/registration/user-registrations/
Apache config file:
Alias /user/report /path/to/project/web/
<Directory /path/to/project/web/>
AllowOverride All
Require all Granted
RewriteOptions AllowNoSlash
RewriteEngine On
RewriteBase /user/report/
RewriteOptions AllowNoSlash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^.]+[^\/]$ $0\/ [R]
RewriteCond %{QUERY_STRING} !user=
RewriteRule ^([a-zA-Z0-9\-]+)/(.*)$ $2?user=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-]+)$ ?user=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|m?js|png|svgz?|webp|webmanifest|pdf)$ $1.$3 [L]
</Directory>
I am using Symfony for routing all my routes.
If you are using Apache 2.4, and do not want to to use .htaccess
files (e.g. for performance reasons), the solution is simply to use a oneliner: FallBackResource
.
You would only need this:
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
DirectoryIndex /index.php
<Directory /var/www/project/public>
AllowOverride None
Order Allow,Deny
Allow from All
FallbackResource /index.php
</Directory>
# optionally disable the fallback resource for the asset directories
# which will allow Apache to return a 404 error when files are
# not found instead of passing the request to Symfony
<Directory /var/www/project/public/bundles>
FallbackResource disabled
</Directory>
</VirtualHost>
This is even shown in Symfony's documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With