Убирать из 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