У нас есть около ста тысяч путей, нам нужно 301 перенаправить на новую структуру.Что-то вроде:
lang.site.com/section/subsection/article
->
lang.site.com/newsection/newsubsection/article
Раньше при миграции с domain.com на newdomain.com мы просто помещали файл .htaccess
с 10k + сгенерированными сценариями строками, соответствующими старым путям новым путям, и это работалоХорошо.Это не повлияло на производительность нового домена, поскольку Apache прочитал .htaccess
только тогда, когда пользователь попытается получить доступ к старому домену.
Теперь это не будет работать, поскольку имя домена неменяется только структура путей.Количество изменяющихся путей приближается к отметке 100 000, поэтому очевидно, что понятие Apache, считывающее 100 000 строк .htaccess
для каждой загрузки страницы, просто абсурдно.
Я хотел бы получить некоторые идеи о том, как реализоватьэто правильно, с низкой производительностью.Я не прошу вас, ребята, за готовое решение, просто помогите в мозговом штурме, что было бы наиболее приемлемым решением в нашем случае использования.
У нас также будет сервер Varnish перед Apache, обслуживающий кэшированный контент, но я полагаю, что следующее решение все еще будет работать, поскольку запросы, которые Varnish не может удовлетворить, перенаправляются на Apache в нашей среде LAMP..
Что я имел в виду:
- В Drupal 7 есть файл
html.tpl.php
, в котором есть <header>
часть страницы - Во время выполнения
html.tpl.php
, мы бы проверили базу данных MySQL, чтобы увидеть, существует ли путь, запрошенный пользователем, в новой таблице pathalias
- Если путь не найден и найдено отношение
old path <-> new path
: - PHP
header('Location:');
К 301 перенаправить пользователя в правильное новое местоположение
- Иное:
- Позволить Drupal обработать запрос как обычно и продолжить выполнение
Нам также сказали обновить перенаправления старого домена, чтобы напрямую перенести пользователя на новый сайт без каких-либо цепочек 301.Я предполагаю, что мы могли бы просто использовать ту же проверку БД, чтобы увидеть, существует ли связь между самым старым путем и самым новым путем по старому пути.К счастью, мы сохранили все эти даже более старые отношения на всякий случай, и теперь они могут быть полезны.
Если вы прочитаете, любые идеи, как решить это наилучшим образом, будут с благодарностью:)