remove trailing slash from URL in htaccess

I have my htaccess configured to work in conjunction with a URL Router I’ve written in PHP. I’m trying to remove a trailing slash if seen from the URL except the root url. My htaccess file looks like this:

Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L]

My URLs look like this:

http://my-site-domain.com/login

This works great but a trailing slashe is causing some issues. (e.g.)

http://my-site-domain.com/login/

Any idea how I can remove the trailing slash for params passed in but not for the root URL?

Thanks,
-Paul

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

Insert this rule just below RewriteEngine On:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=302,NE,L]

Solution 2

For those who are still running into this problem, I solved mine by adding a question mark just after the slash before the dollar sign, like this:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ /$1 [R=302,NE,L]

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply