# Убираем несколько слешей в урле
RewriteCond %{THE_REQUEST} \s/+(.*?)/{2,}([^\s]*)
RewriteRule ^ %1/%2 [R=302,L,NE]
# Убираем последний слеш в урле
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} (/+)$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
$url = rtrim($url,"/");
RewriteEngine On
RewriteBase /
Options +FollowSymLinks
############################################################################
#### Убираем повторяющиеся слеши (/) в URL ####
############################################################################
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
#Проверяем, повторяется ли слеш (//) более двух раз.
RewriteRule . %1/%2 [R=301,L]
#Исключаем все лишние слеши.
############################################################################
#### убирает / в конце строки если это файл ( содержит точку в урл) ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
#содержит точку (файл)
RewriteCond %{REQUEST_FILENAME} !-d
#не директория
RewriteCond %{REQUEST_FILENAME} -f
#является файлом
RewriteCond %{REQUEST_URI} ^(.+)/$
#в конце урла есть слеш
RewriteRule ^(.+)/$ /$1 [R=301,L]
#исключить слеш
############################################################################
#### Добавляет / если его нет, и это не файл!!! ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
#слеша в конце нет
RewriteCond %{REQUEST_FILENAME} !-f
#является файлом
RewriteCond %{REQUEST_URI} !\..+$
#в урле нет точки (файл)
RewriteRule ^(.*)$ $1/ [L,R=301,QSA]
#добавляем слеш в конце