RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
DirectorySlash Off
############################################################################
#### убирает / в конце строки если это файл ( содержит точку в урл) ####
############################################################################
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]
#добавляем слеш в конце