Как сконфигурировать 301 редирект в htaccess с https://site.ru на https://site.ru/?
Ссылка скопирована
Нужно сделать редирект сhttps://site.ruНаhttps://site.ru/.
Причем редирект сhttps://site.ru/productНаhttps://site.ru/product/- работает
Код в htaccess
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*[^/])$ https://site.ru/$1/ [L,R=301]
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Telegram
Как диагностировать ошибку с подключением к прокси в мобильном приложении Telegram?
1 ответ

Редирект с https://site.ru на https://site.ru/ обычно вообще не нужно настраивать вручную: для HTTP URL путь “/” является нормальной формой корня сайта, а браузер и сервер фактически работают с корневым слешем. В curl вы можете видеть разницу в отображении, но с точки зрения запроса к серверу корень уже является “/”. Поэтому правило для добавления слеша к внутренним URL не всегда срабатывает на пустом пути.
Ваше правило:
RewriteRule ^(.*[^/])$ https://site.ru/$1/ [L,R=301]
не матчится на пустую строку, потому что там требуется хотя бы один символ перед концом строки. Для /product это работает, а для корня - нет. Если вам принципиально нужен 301 именно с безслешевого корня на слешевой, можно добавить отдельное правило выше остальных.
RewriteEngine On RewriteCond %{HTTP_HOST} ^site.ru$ [NC] RewriteCond %{THE_REQUEST} s/+s [NC] RewriteRule ^$ https://site.ru/ [R=301,L]
Но здесь есть нюанс: большинство клиентов и так запрашивают GET / HTTP/1.1, а не “пустой путь”. Поэтому проверить такой редирект бывает сложно. Команда curl на URL без слеша обычно сама нормализует путь.
Для добавления завершающего слеша к внутренним страницам оставьте отдельное правило:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+[^/])$ https://site.ru/$1/ [R=301,L]
Также следите, чтобы это не ломало WordPress, API, файлы, query string и служебные URL. Например, для WordPress часто лучше управлять canonical/slash через настройки permalink и штатные редиректы, а не писать общий redirect руками.
Практический вывод: для /product/ правило корректно, для главной отдельный редирект обычно не нужен. Если SEO-аудитор ругается на https://site.ru без слеша, сначала проверьте реальную цепочку через curl -I и Screaming Frog/Netpeak. Часто это не проблема сайта, а особенность отображения URL в инструменте.