Предисловие: Новая рубрика

Порой самописные сайты и сайты с корявыми CMS полны технических огрехов и недоработок, что, в свою очередь, плодит множество ошибок при индексировании сайта поисковыми системами.

Чаще эти вещи не видны невооружённым взглядом, а ещё чаще даже не предполагаются как проблема в принципе.

Открываем новую рубрику, куда будем складывать сухой код для решения проблем по части настройки сайтов, доработки движков и прочих «костылей» из серии «когда ждать разработчика нет сил и смысла. Сделаем всё сами — спасибо!».

Чит-код

Назовём её «Чит-код». В названии прекрасно всё: тут и любые многими читы, упрощающие жизнь, тут и код — команды и инструкции для программ.

Если что-то может пойти не так, именно так оно и пойдёт

Например, если страница на вашем сайте по адресу https://your-site.ru/page-with-slashes/// будет открываться без проблем и адрес в строке браузера так и останется с кучей слешей на конце, то знайте что для поисковиков:

  • https://your-site.ru/page-with-slashes///
  • https://your-site.ru/page-with-slashes//
  • https://your-site.ru/page-with-slashes/
  • https://your-site.ru/page-with-slashes

Это четыре разные страницы. Хотя уверен, показывают они одно и тоже.

Исправляем недоразумение

Добавляем в файл .HTACCESS следующий код

RewriteCond %{THE_REQUEST} // 
# Проверяем, повторяется ли слеш (//) более двух раз. 
RewriteRule .* /$0 [R=301,L] 
# Исключаем все лишние слеши.

Любые недоразумения с повторяющимися слешами будут редиректится в один, тем самым не плодя малополезные клоны одной страницы.

Убрать несколько слешей в конце url на Битриксе

Если код выше не сработал, то скорее всего ваш сайт работает на Битриксе в связке FastCGI (Nginx + PHP-FPM), и правила в .HTACCESS для него пустой звук.

Можно настроить редиректы в файлах конфигурации Nginx, но доступ к ним очень редко дают да и то, если сайт крутится на выделенном сервере. А это для небольших проектов, как правило, экзотика и как “пушкой по воробьям”.

Поэтому делаем «костыль» — убираем слеши в URL с помощью PHP

Как это сработало у меня.

  1. С помощью FTP заходим на сайт
  2. Ищем в корне index.php
  3. После строчки с загрузкой первоначальных параметров и переменных require($_SERVER[“DOCUMENT_ROOT”].”/bitrix/header.php”); вставляем код
  4. Готово! Редиректы заработают и повторяющиеся слеши исчезнут.

Вот код:

$subject = $_SERVER["REQUEST_URI"];
$pattern = '/\/\/+/';
$countReplace = 0;
$replaced_url = preg_replace($pattern, '/', $subject, -1, $countReplace);
if ($countReplace > 0)
LocalRedirect($replaced_url, false, '301 Moved Permanently');

Как это вообще возможно?!

Если честно, поисковые системы специально не будут искать такие технические дыры в вашем сайте. Боты ходят по ссылкам и по специально указанным страницам в файле sitemap.xml и шансы найти именно дубли с повторяющимися слешами маловероятны.

Но вот если кто-то специально подскажет боту, направив ссылкой, а то и не одной…

Чисто моё мнение, что вышеописанный код просто подстраховка от любителей чёрного SEO и недалёких конкурентов-технарей.

Также некоторые алерт-сервисы ругаются и надоедают, найдя возможности для пессимизации. Один раз настроил и забыл.

Что такое .HTACCESS?

Если вы не знаете зачем этот файл нужен, где он находится и за что отвечает, то срочно закрывайте эту страницу!

Файл для настройки веб-сервера не место для баловства и учебных экспериментов.

Подпишись, будет интересно!
2 комментария
    1. Чтобы убрать слэш в конце URL, то спасёт:

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

Отставить отзыв

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