Убирать из URL-адресов (ссылок)
index.php
нужно обязательно, т.к. это все дубли страниц, которые создают проблем в плане SEO и продвижения сайта.
Например, вот эти две страницы на вашем сайте отдают один и тот же контент, что для ПС есть дубль:
/catalog/ /catalog/index.php
Настройка индексной страницы в 1С Битрикс
В Битриксе поможет нам в этом штатная константа
BX_DISABLE_INDEX_PAGE, ее описание из официальной документации:
Может принимать значение true/false. Константа регулирует значение по умолчанию для параметра get_index_page функций GetPagePath(), CMain::GetCurPage(), CMain::GetCurPageParam().
Параметр get_index_page указывает, нужно ли для индексной страницы раздела возвращать путь, заканчивающийся на "index.php". Если значение параметра равно true, то возвращается путь с "index.php", иначе - путь, заканчивающийся на "/". Параметр имеет значение, обратное значению константы.
В этом файле/bitrix/php_interface/dbconn.php
Добавьте эту константу, в любом местеdefine("BX_DISABLE_INDEX_PAGE", true);
Все, обновите страницу в публичной части и проверяйте, во всех ссылках должна исчезнуть индексная страница
index.php
Если не исчезли, пробуйте сбросить весь кэш, особенно композитный, если не помогло, то могут мешать хитрые следы разрабов или сеошников например в файле
urlrewrite.php
или еще хоть где.
Так мы исправили проблему в адресах сайта, но это еще не все, если вы напрямую откроете страницу/catalog/index.php
то она также откроется, никуда не денется, на самом сервере она есть, потому что в предыдущем примере мы убрали индексную страницу только из адресов (ссылок) Битрикса, а сами страницы напрямую открываются по правилам сервера, на сервере тут сложней, разными способами можно избавляться от этого, хоть в знаменитом файле
.htaccess
хоть в конфигах самого nginx
или apache2
301 редирект с /index.php на / в .htaccess
В корне сайта находим файл .htaccess
и добавляем в нем запись где-то после
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://example.com/ [R=301,L]
Пример для сайта работающего на защищенном протоколе https://
с 301 редиректом с
www
на без wwww
, только замените в нем адрес example.com
на свой, например
tuning-soft.ru
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://example.com/ [R=301,L] RewriteRule ^(.*)=(.*) /$1$2 [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,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>
301 редирект с /index.php на / в nginx
На каждом сервере пути до конфигов могут быть совершенно разные, но в панели VESTA по умолчанию конфиги в папке пользователя по этому пути/home/user1254/conf/web/snginx.conf
Для https|ssl
это файл snginx.conf
, а для http
это файл nginx.conf
где в секции server{...}
примерно после строки set $php_sock 127.0.0.1:9018;
необходимо добавить код ниже и заменить example.com
#301 редирект с www на без www if ($host = 'www.example.com' ) { rewrite ^(.*)$ https://example.com$1 permanent; } #301 редирект с index.php на / if ($request_uri ~* "^(.*/)index\.php$") { return 301 $1; }
Обязательно после изменений конфига nginx его необходимо перезагрузить, делается это, например, в PuTTY по SSH так:#service nginx restart