Как убрать папку из 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-продвижении.

    Часто задаваемые вопросы