Копии страниц: /index.php, /index.html и слэш на конце — как убрать
Что это значит
Одна и та же страница открывается по двум адресам: главная — ещё и по /index.php или /index.html, внутренние страницы — и со слэшем «/» на конце, и без него. Сайт должен выбрать один адрес, а второй перенаправлять на него.
- Главная открывается ещё и по адресу /index.php или /index.html. Главная страница открывается не только по основному адресу (например, https://example.by/), но и по адресу с
/index.phpили/index.htmlна конце. Это одна и та же страница, но адреса разные. - Страницы открываются и со слэшем на конце, и без. Одна и та же страница открывается по двум адресам: со слэшем «/» на конце (example.by/uslugi/) и без него (example.by/uslugi). Сайт должен выбрать один вид, а второй перенаправлять на него.
Чем мешает
Поисковики видят одинаковые страницы под разными адресами. Они сами решают, какую показывать, могут выбрать неудачную, а ссылки на страницу делятся между копиями.
Как исправить
WordPress
- Обычно WordPress сам перенаправляет
/index.phpна главную. Если копия открывается, проверьте, не мешает ли плагин кэширования или переадресаций, и добавьте правило в.htaccess(пример ниже). - «Настройки → Постоянные ссылки»: структура со слэшем на конце задаёт основной вид, и WordPress сам перенаправляет второй. Если обе копии открываются, проверьте плагины кэширования и переадресаций.
Tilda
- Проверьте в настройках страниц, что ни у одной страницы не задан адрес
index.phpилиindex.html. Если копию отдаёт сама Tilda, напишите в поддержку и приложите адрес из отчёта. - Tilda сама управляет адресами страниц. Если страница открывается в обоих видах, напишите в поддержку Tilda и приложите пример из отчёта.
1С-Битрикс
- В Битриксе главная — это файл
/index.php, поэтому копия встречается часто. Добавьте в.htaccessв корне сайта правило 301 с/index.phpна главную (пример ниже) перед правилами Битрикса. - Добавьте в
.htaccessправило, которое дописывает слэш адресам без расширения файла (пример ниже). Проверьте, что ссылки в меню и в карте сайта ведут на вид со слэшем.
OpenCart
- В OpenCart всё работает через
index.php, и главная открывается по/index.phpи/index.php?route=common/home. Добавьте в.htaccessправило 301 на главную (пример ниже) и включите ЧПУ в настройках магазина. - Если стоит модуль ЧПУ (например, SEO Pro), включите в нём один вид адресов. Иначе добавьте правило в
.htaccess(пример ниже).
Другой движок или свой сервер
- Добавьте правило 301 с
/index.phpи/index.htmlна главную в.htaccessили nginx (пример ниже). Правило должно смотреть на исходный запрос, иначе сломается сама CMS. - Выберите вид со слэшем или без и настройте 301 со второго (пример для Apache и nginx ниже). Ссылки на сайте и в карте сайта должны вести на выбранный вид.
Пример кода
Замените example.by на адрес своего сайта.
# .htaccess в корне сайта (Apache): /index.php и /index.html → главная одним 301.
# THE_REQUEST — исходный запрос посетителя, поэтому внутренняя работа CMS через index.php не ломается.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html?)[\s?] [NC]
RewriteRule ^index\.(php|html?)$ / [R=301,L]
# nginx (внутри server { … } основного сайта):
if ($request_uri ~* "^/index\.(php|html?)(\?|$)") {
return 301 /;
}
# .htaccess (Apache): добавить слэш на конце адресам без расширения файла.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule ^(.*)$ /$1/ [R=301,L]
# nginx (внутри server { … }): то же самое
rewrite ^([^.?]*[^/])$ $1/ permanent;
Если сайт делал подрядчик
Перешлите ему ссылку на отчёт и эту просьбу:
Страницы открываются по лишним адресам: /index.php, со слэшем и без (примеры в отчёте). Настройте, пожалуйста, 301-переадресацию на основные адреса.
Как проверить, что всё исправлено
Откройте в браузере адрес главной с /index.php на конце: адресная строка должна сама смениться на основной адрес. Проверьте сайт снова на yasnoseo.by.