Как убрать .html из URL и настроить ЧПУ через htaccess
Владельцы сайтов на статичном HTML часто сталкиваются с проблемой: страницы открываются с расширением .html, а хочется видеть в адресной строке короткие ЧПУ (человеко-понятные URL) без лишних символов. Например, вместо https://sitename.ru/about.html - https://sitename.ru/about/. В этой статье мы разберём, как правильно настроить файл .htaccess, чтобы убрать .html из URL, организовать редиректы и избежать бесконечных циклов вроде .html.html.html.
Почему возникает ошибка с повторением .html?
Проблема бесконечных расширений (например, page.html.html.html) возникает из-за некорректной цепочки правил в .htaccess. Когда сервер не находит файл по запросу /abbout/, он пытается подставить .html, но из-за отсутствия проверки на уже существующее расширение редирект зацикливается. В итоге браузер выдаёт ошибку или бесконечный URL.
Пошаговая настройка .htaccess для удаления .html
1. Включаем модуль RewriteEngine
Убедитесь, что на сервере включён mod_rewrite. Добавьте в начало файла:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /2. Редирект с .html на URL без расширения
Это правило перехватывает запросы, содержащие .html, и перенаправляет на чистый URL с кодом 301 (постоянный редирект):
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ /$1/ [R=301,L]3. Внутренняя подстановка .html при запросе папки
Когда пользователь заходит на /about/, сервер должен отдать файл about.html, не меняя URL. Для этого используем:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/$ /$1.html [L]4. Защита от циклических редиректов
Добавьте проверку, что файл действительно существует:
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ /$1.html [L]Полный рабочий код .htaccess
Скопируйте этот проверенный код в корневой файл .htaccess вашего сайта:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Редирект с .html на /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ /$1/ [R=301,L]
# Подстановка .html для ЧПУ
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ /$1.html [L]
# Страницы ошибок
ErrorDocument 404 /error_404.htmlЧто делать, если сайт на PHP или CMS?
Если ваш проект использует PHP (например, WordPress или самописный движок), описанный метод может конфликтовать с маршрутизацией. В таких случаях лучше использовать плагины (Yoast SEO, Rank Math) или встроенные настройки ЧПУ. Для статического HTML этот способ - самый надёжный.
Как проверить правильность настройки?
- Откройте любую страницу вида
/about/- она должна загружаться без .html. - Попробуйте ввести неверный адрес - должна появиться страница 404.
- Убедитесь, что нет циклических редиректов (инструменты вроде Redirect Checker).
Настройка ЧПУ улучшает юзабилити и SEO сайта. Короткие URL без расширений лучше индексируются поисковиками и выглядят привлекательнее для пользователей.