Как убрать папку из URL через .htaccess: правило для редиректа
Часто перед веб-мастерами встаёт задача изменить структуру URL на сайте, сохранив доступ к страницам. Например, нужно, чтобы страница mysite.ru/folder/page.html открывалась по адресу mysite.ru/page. Решить это можно с помощью правил mod_rewrite в файле .htaccess. В этой статье мы подробно разберём, как настроить редирект с удалением папки и расширения файла.
Зачем удалять папку из URL?
Короткие и чистые ссылки улучшают юзабилити, воспринимаются пользователями как более надёжные и положительно влияют на ранжирование в поисковых системах. Удаление лишних сегментов пути (например, /folder/) делает адрес страницы лаконичным и запоминающимся. Кроме того, это помогает избежать дублей контента, если страница доступна по нескольким адресам.
Базовая настройка mod_rewrite в .htaccess
Для работы правил необходимо убедиться, что модуль mod_rewrite включён на сервере Apache. В большинстве хостингов он активен по умолчанию. Добавьте следующий код в файл .htaccess, который должен находиться в корневой директории вашего сайта:
RewriteEngine On
RewriteRule ^page$ folder/page.html [L]Это правило внутренне подменяет запрос: при обращении к mysite.ru/page сервер отдаёт содержимое файла mysite.ru/folder/page.html. При этом адрес в браузере остаётся mysite.ru/page - это называется внутренний редирект (rewrite).
Если нужно внешнее перенаправление (301 редирект)
Если вы хотите, чтобы пользователь, перешедший по старому адресу, был перенаправлен на новый, используйте внешний редирект с кодом 301:
RewriteEngine On
RewriteRule ^folder/page\.html$ /page [R=301,L]В этом случае посетитель, зашедший на mysite.ru/folder/page.html, будет автоматически перенаправлен на mysite.ru/page. Постоянный редирект (301) передаёт вес ссылки новому URL.
Универсальное правило для любых страниц в папке
Если в папке folder много файлов и вы хотите убрать её из URL для всех страниц, используйте динамическое правило:
RewriteEngine On
RewriteRule ^folder/(.*)\.html$ /$1 [R=301,L]Это правило обрабатывает любой файл с расширением .html внутри папки folder и перенаправляет на URL без папки и расширения. Например, mysite.ru/folder/about.html станет mysite.ru/about.
Важные нюансы и проверка
Перед применением правил обязательно сделайте резервную копию файла .htaccess. Проверьте работу редиректа в браузере или с помощью онлайн-инструментов, чтобы убедиться, что не возникает ошибок 404 или циклических перенаправлений. Если сайт использует CMS (например, WordPress), убедитесь, что ваши правила не конфликтуют с уже существующими.
Что делать, если правило не работает?
- Проверьте, включён ли модуль mod_rewrite (обратитесь в поддержку хостинга).
- Убедитесь, что файл
.htaccessимеет правильные права доступа (обычно 644). - Проверьте синтаксис: не должно быть лишних пробелов или переносов строк.
- Используйте опцию
RewriteBase /перед правилами, если сайт расположен не в корне.
Заключение
Настройка редиректа с удалением папки из URL - простая задача, решаемая парой строк в .htaccess. Используйте внутренний редирект для сохранения чистого адреса или внешний 301 редирект для перенаправления старых ссылок. Правильно настроенные правила улучшат структуру сайта и помогут в SEO-продвижении.