Как сконфигурировать 301 редирект в htaccess с https://site.ru на https://site.ru/?

Ссылка скопирована
1 ответ

Нужно сделать редирект с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
Ольга Сеть Ответ

Редирект с https://site.ru на https://site.ru/ обычно вообще не нужно настраивать вручную: для HTTP URL путь “/” является нормальной формой корня сайта, а браузер и сервер фактически работают с корневым слешем. В curl вы можете видеть разницу в отображении, но с точки зрения запроса к серверу корень уже является “/”. Поэтому правило для добавления слеша к внутренним URL не всегда срабатывает на пустом пути.

Ваше правило:

RewriteRule ^(.*[^/])$ https://site.ru/$1/ [L,R=301]

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]

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]

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 в инструменте.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно