1

I want to remove the last trailing slash of a URL. For example: I want to http://localhost/mysite/page/ rewrite to http://localhost/mysite/page.

I'm using this code on my localhost .htaccess.

Options +FollowSymLinks
RewriteEngine   on
RewriteRule ^([a-zA-Z0-9_-]+)/$ $1 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)$ web.php?page=$1

If I write on my browser http://localhost/mysite/index, it shows what I want. But if I write http://localhost/mysite/index/ it tells me "not found" and "the requested URL was not found on this server". I'm using UniServer on Windows 8.

nickgrim
  • 4,336
  • 1
  • 17
  • 27
Tes
  • 11
  • 1
  • 3

2 Answers2

1

Try this instead:

# Remove trailing slash if not an existing directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

# Rewrite to use web.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ web.php?page=$1 [L]

You may not need to change the second rule if it's already working fine.

Grant
  • 17,671
  • 14
  • 69
  • 101
  • If I write the same code, it doesn't work. If I write before it: `Options +FollowSymLinks RewriteEngine on` When I write `http://localhost/mysite/index` It shows me a problem with a redirect loop. And if I write `http://localhost/mysite/index/`, it redirects me to: `http://localhost/C:/UniServer/www/mysite/index`. If I only write the first rule, it works for "index" but it redirects to the same with "index/". – Tes Mar 10 '13 at 07:54
0

It worked adding this line

RewriteRule ^(.*)/$ /mysite/$1 [R,L]
Tes
  • 11
  • 1
  • 3