Битрикс как добавить слеш в ссылках

Очень часто SEOшники и оптимизаторы сайтов защищают проект от дублей и ошибки 404. Разбираем подробней как быстро настроить редирект или изменить правила формирования в самом Битриксе.
Прежде всего, зайдите в информационный блок и настройки компонента. Там необходимо прописать правила для разделов и элементов:

#SECTION_CODE#/
#ELEMENT_CODE#/

Убедитесь что эти настройки везде выставлены, если это не помогло, значит проблема не в Битриксе.

Переходим ко второму шагу. В файле .htaccess, который расположен в корне сайта добавьте запись:

<IfModule mod_rewrite.c>
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-l
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
   RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

Сразу после

<IfModule mod_rewrite.c>

Полный файл может выглядеть вот так:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   RewriteEngine On

   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
   RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
   RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
   RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
   RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
   RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
   RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
   RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
   RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]
   
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-l
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
   RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-l
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
   RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
   RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

Также, блок для mod rewrite можно заменить на это:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
  RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
			
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]

</IfModule>

Надеюсь данный код помог решить вашу SEOшную задачу 🙂

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

6 коментаря

  1. Вставил:

    Options +FollowSymLinks
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
    RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
    RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization}]

    Все работает. Спасибо!

  2. я не разработчик, просто работаю с сайтом.
    файл .htaccess в корне сайта работает правильно. Но, есть еще файлы .htaccess во вложенных папках, которые создают страницы 2 и далее уровней. И вот на этих страницах нет редиректа на со слэшем . Все другие редиректы на этих страницах срабатывают.
    Прочла кучу инофрмации, но никто не пишет про настройку внутренних файлов .htaccess . Вы не могли бы подсказать как мне настроить редиректы у страниц типа

    1. тут вам не подскажу, потому как разрабатываю сайты только на битриксе, и для данной задачи всегда используется связка одного файла htaccess + url_rewrite.php

  3. Привет.
    Все отлично работает. Но есть одно НО
    Дописывание слеша мешает вот такому запросу
    URL для запросов API
    /bitrix/services/yandex.market/trading/marketplace/s1

    URL для запросов API
    Укажите URL-адрес, на который магазин принимает запросы от Яндекс Маркета. Рекомендуется указывать базовый URL, например: /marketplace/api. Для такого примера запрос POST /cart будет приходить на URL /marketplace/api/cart

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *