301 редирект для страниц без слеша и со слешем на конце

Когда на сайте URL адреса вида:

/301-redirekt-dlya-stranic-bez-slesha-i-so-sleshem/

/301-redirekt-dlya-stranic-bez-slesha-i-so-sleshem

Страница может открываться без слеша и со слешем на конце, что приводит к дублированию (одна и та же страница отрывается по двум адресам). Для решения этой проблемы — необходимо определить один вариант (посмотреть как проиндексирован сайт поисковыми системами) и сделать 301 редирект через файл .htaccess

Убираем слеш в конце

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

Со слешем на конце

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Такая проблема встречается довольно часто и исправить эту ошибку критически необходимо.

Комментарии по теме “301 редирект для страниц без слеша и со слешем на конце

  1. Добрый день! Сделал все, как вы указали. Однако видимо с кешем проблема, то перенаправляет, то нет страницы. Никак не могу понять, работает 301 на исходную страницу без слеша или нет.

    1. Кидайте ссылку, посмотрим. Либо проверьте в Яндекс.Вебмастере ответ сервера (либо в любом другом онлайн сервисе) по каждой из ссылок.

  2. А если у меня на сайте страница без слеша показывает 404, то надо сделать так же или необязательно? Ведь по идее контент не дублируется, но с другой стороны, стерев «лишний» символ мы получаем 404.

    1. Олеся, значит у Вас все хорошо. Адреса страниц должны открываться либо со слешем, либо без него. В вашем случае нет дублирования страниц, так как без слеша страница не существует (ошибка 404), делать редиректы нет необходимости.

  3. Подскажите, у меня есть ряд страниц порядка 20-30, которые нужно перенести с без слеша на слеш.
    Как это сделать для отдельных страниц (массово нельзя ибо такой функционал, что часть страниц долна быть со слешем а другая без — к сожалению)

    1. RewriteRule old-page.html /new-page.html [R=301,L]
      где:
      old-page.html — урл старой страницы
      /new-page.html — урл новой страницы
      Один урл — одна строка.

Добавить комментарий

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