Добавляем / в конце URL-адреса
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) https://www.site.ru/$1/ [R=301,L]Еще вариант добавить слеш в конце урла
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]И еще вариант
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteRule ^(.*)$ $1/ [L,R=301]Еще один вариант
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} ^(.+)$
RewriteRule ^(.*)$ $1/ [L,R=301]И еще один вариант
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]Еще один вариант
RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]Когда несколько сайтов на одном хосте/CMS и нет возможности вставить адрес сайта
RewriteEngine On
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]Костыль для Битрикса
Если ничего не помогает на Битриксе (На других не пробовал), то добавьте php код в самом начале вашего шаблона, header.php (на Битриксе)
<?php
if (substr($_SERVER['REQUEST_URI'], -1) !== '/') {
header('Location: ' . $_SERVER['REQUEST_URI'] . '/', true, 301);
exit;
}Добавил исключение для некоторых разделов в Битриксе, а также исключил урлы с гет-параметрами
if (substr($_SERVER['REQUEST_URI'], -1) !== '/' && empty($_GET) && strpos($_SERVER['REQUEST_URI'], '/personal/') === false && strpos($_SERVER['REQUEST_URI'], '/bitrix/') === false) {
header('Location: ' . $_SERVER['REQUEST_URI'] . '/', true, 301);
exit;
}Убрать / в конце URL
RewriteEngine On
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]В джумле 3 возможен такой вариант, что перестанет заходить в админку после убирания слэша. Для этого убираем редирект из htaccess и в шаблоне в файле (как правило) index.php после строки
defined( '_JEXEC' ) or die( 'Restricted access' );
прописать такой код:
$uri = preg_replace("/\?.*/i",'', $_SERVER['REQUEST_URI']);
if ((!strpos($uri, 'administrator')) && (strlen($uri)>1)) {
if (rtrim($uri,'/')!=$uri) {
header("HTTP/1.1 301 Moved Permanently");
header('Location: http://'.$_SERVER['SERVER_NAME'].str_replace($uri, rtrim($uri,'/'), $_SERVER['REQUEST_URI']));
exit();
}
}Еще варианты убрать слеш в конце
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]Еще варианты
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]После удаления слешей при входе в админку иногда возникает ошибка: «На этой странице обнаружена циклическая переадресация ERR_TOO_MANY_REDIRECTS». Это из-за того, что ее адрес должен быть со слешем. Тогда нужно добавить еще строчку, исключающую удаление слеша из адреса админки:
RewriteCond %{REQUEST_URI} !^/admin(/(.*)|$)(вместо admin прописывается адрес к админке, например, в WordPress это wp-admin, в modx — manager).
Целиком правила получаются вот такие:
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteCond %{REQUEST_URI} !^/manager(/(.*)|$)
RewriteRule ^(.*)(/)$ $1 [L,R=301]Или такой вариант с исключением:
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^(.*)(/)$ $1 [L,R=301]Описание
Не путать редиректы по убиранию множественных слешей, в том числе и в конце урла, это другое.
На мой взгляд довольно-таки важный редирект, особенно часто встречаю такую проблему у Битрикса (Bitrix). Но и другие CMS этим грешат. Когда подставляя или убирая последний слеш, страница все равно отдает 200 ответ сервера и по сути является дублем, со всеми вытекающими негативными последствиями для поискового ранжирования.
Вообще нет единого мнения, оставлять или убирать слеш в конце URL-адреса. Даже я сам лично на каких-то проектах убираю, на каких-то оставляю. Стараюсь убирать слеш в конце там, где плоская структура URL’ов, например: https://site.ru/something-product-or-article. На мой взгляд так выглядит чисто визуальней более эстетично, если можно применить это в WEB’e 🙂
Ну, а в глубокой структуре стараюсь добавить слеш в конец URL’а, чтобы выглядело более симметрично что ли, например https://site.ru/catalog/category/tovar/, где каждый участок урла закрывается слешем.
Ни в коем образе не претендую на истину в последней инстанции. Это лишь мой опыт, каждый волен настраивать в данных случаях редиректы, как ему будет угодно и здесь нет абсолютно верных или не верных вариантов. Поэтому и представлены оба варианта, а какой выбрать уже ваш выбор.





Спасибо большое, перепробовал кучу редиректов, чтобы добавить слеш в конце, но ничего не помогало, а код PHP для битрикса помог!