22.8. Перенаправление URL в новый каталог

Проблема

Вы капитально переработали структуру своего веб-сайта, который ранее представлял собой неупорядоченное множество файлов. Вы создали новую структуру, но URL-адреса изменились. Это приводит к тому, что закладки, созданные посетителями, а также ссылки на ваш сайт в интернет-статьях и поисковых системах становятся недействительными. Это может негативно сказаться на пользовательском опыте и поисковом трафике. Как исправить эту ситуацию?

Решение

Для решения этой проблемы используйте возможности модуля mod_rewrite в Apache, который позволяет перенаправлять URL. Включите директивы Rewrite в файл httpd.conf, чтобы настроить перенаправление старых URL-адресов на новые. Вот пример простого правила перенаправления URL:

RewriteEngine on
RewriteRule ^/olddir/(.*)$ /newdir/$1 [R=301,L]

Это правило указывает серверу перенаправлять все обращения к http://www.bratgrrl.com/olddir/ и всем файлам или каталогам внутри olddir/ на http://www.bratgrrl.com/newdir/, сохраняя путь после newdir. Флаг R=301 указывает на перенаправление 301, что сообщает поисковым системам, что URL изменён навсегда, а флаг L означает, что это последнее правило в текущем цикле обработки.

Флаг L (Last) обозначает, что это правило является последним, которое должно быть обработано в текущем цикле. Когда сервер Apache сталкивается с правилом, помеченным как L, он прекращает проверку последующих правил для данного URL. Это важно для оптимизации производительности и предотвращения нежелательных перенаправлений. Например, если для определённого URL указаны несколько подходящих правил, выполнение первого с флагом L остановит дальнейшую обработку, и сервер не будет продолжать проверку следующих правил. Однако, если другие условия в конфигурации требуют повторного запуска цикла (например, для внутреннего перенаправления), Apache может снова обрабатывать правила с начала, что помогает управлять сложными сценариями перенаправлений и внутренней маршрутизацией на уровне сервера.

Комментарии и пояснения

Перенаправление целых каталогов с использованием модуля mod_rewrite позволяет легко поддерживать старые ссылки и облегчает переход для пользователей. Однако, если вам нужно перенаправить отдельные файлы с уникальными путями, может потребоваться составить несколько правил. Вот более сложный пример, где реализовано перенаправление для отдельных страниц:

RewriteEngine on
RewriteRule ^/oldpage.html$ /newpage.html [R=301,L]
RewriteRule ^/another-oldpage.html$ /another-newpage.html [R=301,L]

Эти правила перенаправят запросы с /oldpage.html на /newpage.html и с /another-oldpage.html на /another-newpage.html, сохраняя поисковую видимость и доступность информации для пользователей, перешедших по старым ссылкам.

Другие методы перенаправления в Apache

Для перенаправления URL в Apache доступны и другие методы, такие как директива Redirect из модуля mod_alias. Этот способ удобен для более простых задач перенаправления, где mod_rewrite может быть избыточным.

Redirect 301 /oldpath /newpath

Директива Redirect 301 указывает, что все запросы к /oldpath перенаправляются на /newpath с кодом статуса 301. Это метод является более простым, но не предоставляет тех же возможностей гибкости и настройки, как mod_rewrite.

Практические рекомендации для SEO

Зачем использовать перенаправления?

Перенаправления помогают сохранить рабочие ссылки, обеспечивают лучшее взаимодействие с пользователями и улучшают SEO-оптимизацию, особенно после обновления структуры сайта. Применяя перенаправления, вы предотвращаете потерю трафика и улучшаете доступность сайта для пользователей и поисковых систем.

См. также

The URL Rewriting Guide