1

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

anubhava
  • 761,203
  • 64
  • 569
  • 643
Paul
  • 11,671
  • 32
  • 91
  • 143

2 Answers2

1

Insert this rule just below RewriteEngine On:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=302,NE,L]
anubhava
  • 761,203
  • 64
  • 569
  • 643
  • That did the trick...I assume the R is redirect but what is 302, NE, and L? – Paul Mar 07 '15 at 16:34
  • 302 is for http status code = 302 used in redirect. L is for last and NE for no encoding. More details: http://httpd.apache.org/docs/current/rewrite/intro.html – anubhava Mar 07 '15 at 17:41
-1

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]