Перейти к содержимому
ArchiLinks
ArchiLinksЗарегистрироваться

Рецепт карты редиректов: ранжируем старые URL по количеству входящих ссылок

Карта редиректов — это приоритетный список, а не таблица со всеми URL. Начните со страниц, на которые ссылаются другие сайты, и остальная часть карты станет проще.

Исследовательская команда ArchiLinks ·

Рабочий сортирует ценные золотые кирпичи от серых камней на верстаке

Зачем ранжировать по ссылкам

Команды часто строят карты на основе данных краулинга. Это полный список. Но он приравнивает забытую пресс-страницу 2014 года к главной странице.

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

Остальные URL подчиняются правилам. Папки маппятся по шаблону, параметры отслеживания удаляются, а orphan-URL без ссылок и трафика могут возвращать 410, если вы так решите. Сопоставьте результат с чек-листом миграции, чтобы карта прошла тестирование до запуска и повторную проверку на 45-й день, а также с скриптами API для настройки ежемесячного сбора данных.

Шаг 1: получение списка связанных страниц

Один запрос возвращает до 1 000 строк и стоит 2 кредита, независимо от количества строк. Имена полей ниже приведены как пример; посмотрите реальный ответ и скорректируйте ключи.

python
import csv, requests

BASE = "https://archilinks.com/api.php"
KEY = "sk_live_..."

def call(action, **params):
    r = requests.get(BASE, params={"action": action, "key": KEY, **params}, timeout=30)
    r.raise_for_status()
    return r.json()

data = call("toppages", q="old-shop.com", per=1000)
rows = next(v for v in data.values() if isinstance(v, list))

with open("linked-pages.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["old_url", "links", "new_url"])
    for row in rows:
        w.writerow([row.get("url"), row.get("backlinks"), ""])

Шаг 2: заполнение третьего столбца

01

Сопоставление по смыслу

Страница товара переходит на тот же товар или его категорию, если товар больше не доступен. Никогда не на главную страницу, если только эта страница не была главной.

02

Попросите второго человека проверить топ-50

Уставший человек в 18:00 может сопоставить руководство по каноническим ссылкам с индексом блога. Рецензент это заметит.

03

Правила для длинного хвоста

Напишите шаблоны для папок и удаляйте параметры отслеживания. Храните каждое правило в системе контроля версий с комментарием, объясняющим причину его создания.

Шаг 3: генерация правил сервера

nginx хорошо работает с файлами маппинга, и он масштабируется на десятки тысяч строк.

nginx
# /etc/nginx/redirects.map  (generated from the csv)
/old/guide-canonicals    /guides/canonical-tags;
/products/blue-widget    /shop/widgets/blue;

# in nginx.conf, http context
map $request_uri $new_uri {
    default "";
    include /etc/nginx/redirects.map;
}

# in the server block of the old host
if ($new_uri) {
    return 301 https://new-shop.com$new_uri;
}
Металлический рычаг фиксирует каменный блок в структуре моста

Шаг 4: тестирование каждого перехода

Прерывайте пайплайн при любом результате, отличном от единичного 301, ведущего на 200 OK.

bash
while IFS=, read -r old new; do
  out=$(curl -s -o /dev/null -w "%{http_code} %{num_redirects} %{url_effective}" -L "https://old-shop.com$old")
  echo "$old -> $out"
done < redirect-pairs.csv | grep -v "^.* -> 200 1 " && echo "FIX ABOVE"

Ошибки, которые мы проверяем в первую очередь

СимптомВероятная причинаРешение
Цепочки из двух или трех переходовСтарые правила, наложенные на новыеНаправьте старое правило сразу на финальный URL
Весь трафик уходит на главную страницуЛенивое правило catch-allСопоставляйте по тематике; Google может воспринимать массовые редиректы на главную как soft 404
Потеря query-строкПравило отбрасывает аргументыСохраняйте параметры, влияющие на контент; остальные удаляйте
Топовый URL возвращает 404 после запускаПропущен в CSVПовторно запустите сбор данных и сравните с актуальной картой
Садовник обрезает сложный куст, в то время как шланк поливает простой участок

Какие URL заслуживают ручной маппинг

Не каждый URL заслуживает ручной обработки. Полезное разделение — по ссылочным доменам: любой URL, на который ссылаются несколько внешних сайтов, сопоставляется вручную, а остальные обрабатываются по набору правил. Скажем, у вас есть 4 000 старых URL, и 60 из них удерживают большую часть внешних ссылок. Эти шестьдесят требуют послеобеденного обзора, а остальные 3 940 обрабатываются по шаблону и тесту.

Держите порог в скрипте, а не в голове у человека. Пять ссылочных доменов — разумное начало для среднего сайта. Начните с этого. Уменьшите число, если у всего сайта мало ссылок, и увеличьте, если список ручных сопоставлений становится слишком длинным для одного рецензента.

Разделение строк с ручным и автоматическим сопоставлением

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

Смешанные случаи вызывают большую часть путаницы. Товар, который был снят с производства и заменен преемником, перенаправляется на преемника. Один снятый с производства товар без преемника относится к своей категории, а не к главной странице.

Использование второго запроса для отслеживания изменений

Запустите сбор refdomains для старого хоста перед финализацией карты, затем снова после запуска и сопоставьте два списка по доменам. Домен, отсутствующий во втором запросе, — это вопрос к владельцу ссылки, а не повод для паники, так как удаление ссылки может долго отражаться в индексе.

Храните оба файла рядом в папке миграции, указывая дату в каждом имени. Diff покажет, куда смотреть, а карта — что вы с этим сделали.

Решение, что делать с URL без ссылок

Orphan-URL без ссылок и трафика — это легкая часть. Возвращайте четкий 404 или 410, если контент удален навсегда, и делайте редирект только при наличии близкой замены, чтобы посетители и краулеры попадали куда-то полезное.

Если вы сомневаетесь, оставьте короткую заметку в карте и вернитесь после первой недели логов. Логи сервера покажут, какие старые адреса все еще получают запросы — это лучшее доказательство, которое у вас будет.

Как карта вписывается в релиз

Карта редиректов меняется вместе с сайтом. Имейте это в виду. Появляются новые страницы, старые переименовываются, а изменение шаблона может сломать правило, которое казалось надежным в прошлом месяце. Относитесь к карте как к коду: один файл в системе контроля версий, ревью перед каждым деплоем и тестирование при каждом изменении.

Старайтесь держать карту в одном слое. Редиректы, разбросанные по приложению, CDN и CMS, — это то, как появляются цепочки, а цепочки трудно обнаружить без полного краулинга.

Где должны жить правила

Серверная карта работает быстро и легко тестируется. Плагин CMS удобен для нескольких страниц, но его сложно аудировать в масштабе. Каким бы способом вы ни воспользовались, тест одного перехода должен читаться из того же источника.

Если два слоя перенаправляют один и тот же URL, тест покажет цепочку. Удалите дубликат из того слоя, который планируете вывести из эксплуатации.

Тестирование на реальном хосте после каждого изменения

Запускайте тест переходов на staging, а затем на production после каждого изменения файла правил. Правило, прошедшее тест на staging, все еще может дать сбой, если кэш держит старый ответ, поэтому второй запуск важен.

Сохраняйте результат с датой. Когда топ-URL сломается через несколько месяцев, старый результат покажет, изменилось ли правило или сайт. Чек-лист миграции указывает, когда должен проводиться этот тест, а запуск его первым делает следующую проверку сопоставимой с текущей.

Обзор изменений в файле правил

Назначьте одного рецензента для изменений в карте и попросите его проверить три вещи: соответствует ли каждая цель теме, сколько переходов создает правило и достаточно ли узок шаблон, чтобы затрагивать только те URL, для которых он написан. Изменение, которое никто не проверил, с большей вероятностью запустит цепочку.

Запрашивайте то же ревью, когда меняется сам сайт. Новая категория, поглощающая старую папку, может заставить правильное правило указывать не туда, даже если карту никто не редактировал.

Храните заметку рецензента рядом с изменением. Спустя шесть месяцев заметка объяснит правило, которое иначе выглядело бы произвольным, и сэкономит время на повторном расследовании того же вопроса.

Тестирование выборки перед полным запуском

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

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

Поддержание небольших файлов правил

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

Удаляйте правило в день, когда исчезает его папка. Старые правила, оставленные позади, — это те, которые позже отправляют трафик в цепочку.

Перед тем как карта пойдет в продакшн

  • В каждой строке есть новый URL или преднамеренный 404 или 410.
  • Ни одна цель сама не является редиректом.
  • 50 URL с наибольшим количеством ссылочных доменов были проверены вторым человеком.
  • Query-параметры, влияющие на контент, сохраняются.
  • Файл правил находится в системе контроля версий, с комментарием к каждому шаблону.
  • Базовый уровень по ссылочным доменам сохранен для post-launch diff.

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

Стоит ли удалять старые редиректы через год?
Многие команды по миграции хранят их не менее года. После этого храните их до тех пор, пока старые URL все еще получают внешние ссылки или трафик. Редиректы почти ничего не стоят в обслуживании, поэтому редко есть веская причина удалять их раньше времени.
Можно ли редиректить только проиндексированные страницы?
Нет, если неиндексированные страницы содержат ссылки. Статус индексации мало говорит о внешнем весе. Перенаправляйте каждый URL, имеющий ссылочный домен, а остальное решайте по трафику.
Что насчет 302 или 307 для постоянного переезда?
Используйте 301 или 308 для постоянных переездов. 302, оставленный на годы, может быть воспринят как постоянный, но этот исход зависит от случая, и другие клиенты редиректа могут интерпретировать его иначе.
Можно ли редиректить 404 со старого сайта на новый?
Только при наличии близкого совпадения. Редирект на нерелевантную страницу Google воспринимает как soft 404. Возвращайте реальный 404 или 410, если контент удален.