@Barneyss

Как убрать из url сайта .html и не создать при этом дублей?

подскажите такой момент пожалуйста

на сайте были страницы вида
/contact.html

задача убрать в конце .html
чтобы просто были вот такие
/contact

через htaccess сделал редирект такого вида

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.*$ $0.html [L,QSA]
RewriteCond %{THE_REQUEST} ([^\s]*)\.html(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]

с этой задачей получилось, но возникла проблема потом с картой сайта, потому как появились дубли страниц...и они получаются будут все индексироваться, а это не хорошо...
/contact
/contact.html

подскажите как настроить правильно этот редирект не создавая дублей?
или как их закрыть может нужно через robots...
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Barneyss Автор вопроса
отвечаю на свой же вопрос)
вот этот код в htaccess делает именно такой редирект как мне нужно
без .html, без www. , с https, и вроде как без дублей судя по sitemap

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ https://domen.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#и отдельно вот этот код пришлось добавить, т.к. почему то главная открывалась в виде https://domen.ru/index
Redirect 301 /index https://domen.ru
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы