Наверняка, многие из Вас понимают, что в большинстве случаев "http://mysite.ru/dir" и "http://mysite.ru/dir/" откроют одно и то же. Но это лишь в большинстве случаев, а не всегда. Если идёт обработка REQUEST_URI через PHP, то там может иметь огромное значение наличие или отсутствия слэша в конце URL. И очень важно привести весь сайт к единому стандарту, чтобы было либо со слэшем на конце, либо без. Вот как удалить слэш на конце URL через .htaccess, а также как его добавить, я расскажу в этой статье.
Я приведу 2 кода, один всегда удаляет слэш на конце URL, а другой всегда добавляет. Начнём с 1-го варианта:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$
$1 [L,R=301]
Теперь если пользователь введёт "http://mysite.ru/dir/" его автоматически перенаправит на "http://mysite.ru/dir". Разумеется, все GET-параметры сохранятся. Например, если пользователь вводил: "http://mysite.ru/dir/?a=5&b=7", то его перенаправит по такому адресу "http://mysite.ru/dir?a=5&b=7".
А сейчас давайте рассмотрим вариант, когда нам обязательно нужен слэш в конце URL, то есть чтобы при вводе "http://mysite.ru/dir" был автоматический переход на "http://mysite.ru/dir/":
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$
$1/ [L,R=301]
С этим кодом в .htaccess слэш будет добавляться автоматически в конце URL.
Теперь Вы знаете, как удалять и добавлять слэш в конце URL через .htaccess. И Вам нужно лишь определиться, какой вариант Вам больше нравится, потому что никакой принципиальной разницы между ними нет.