Имеется штекер:
/.htaccess
RewriteEngine on
RewriteCond %{HTTPS}_%{HTTP_HOST} ^(?|off_(?:www\.)?(.*)|on_www\.(.*)) [NC]
RewriteRule .* https://%1/$0 [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/public/$0 !-f
RewriteCond %{DOCUMENT_ROOT}/public/$0 !-d
RewriteRule .* /public/index.php?$0 [L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule .* /public/$0 [L]
Суть его - убрать возможность дубля по адресам примерно такого вида:
1. site/controller
2. site/public/controller
То есть во втором случае с public, мы не имеем доступа к controller, так как контроллером становится public :)
Что не устраивает?
При вводе адреса 
site/publiс/ всё нормально, при вводе 
site/public как видим БЕЗ слеша, то адрес дописывается и принимает следующий вид 
site/public/?public.
Я не использую явные GET-параметры, поэтому думаю отрежу-ка я QUERY_STRING, переписал вот это строчку 
RewriteRule .* /public/index.php?$0 [L] на 
RewriteRule .* /public/index.php [L], трабла с 
?public исчезла, но теперь при вводе без слеша или со слешем всегда имеем 
site/publiс/, то есть последний слеш появляется всегда.
Как убрать появление слеша в конце, ЕСЛИ ВВЁЛ АДРЕС БЕЗ ПОСЛЕДНЕГО СЛЕША?
p.s. последний слеш появляется всегда, ТОЛЬКО ПРИ АДРЕСЕ 
/site/public, других адресов не касается.