Исследуйте пути перенаправления

Семь проверенных локальных HTTP-примеров, а не сканирование вашего сайта. Исходная ссылка и ответы показаны отдельно. Поисковик и индекс ссылок не опрашиваются.

Считаются показанные GET-запросы после исходной страницы. Предел в шесть запросов относится к учебному клиенту, а не Googlebot. Конечный ответ может быть ошибкой; 200 не доказывает релевантность.

R01 · Перенесённая страница без правила

Ожидаемый результат
Для старого руководства есть подходящий /guide, но URL возвращает 404.
Предлагаемое действие
Добавьте одно постоянное перенаправление на заданную замену.
Критерий приёмки
Тот же старый URL отвечает 301, затем /guide — 200 с нужным материалом.

Ссылка на исходной странице · без изменений

GET /publisher/r1
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r1/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 1 · Ответы с перенаправлением: 0

GET /r1/old-guide
HTTP 404
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Unavailable</title></head><body><h1>Not available</h1></body></html>

Получен конечный ответ

После

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r1/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

R02 · Рабочая цепочка с лишним шагом

Ожидаемый результат
Руководство открывается через /middle; промежуточный переход устраним.
Предлагаемое действие
Направьте сразу на /guide, сохранив ещё нужные промежуточные правила.
Критерий приёмки
Три запроса превращаются в два; материал и исходная ссылка не меняются.

Ссылка на исходной странице · без изменений

GET /publisher/r2
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r2/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 3 · Ответы с перенаправлением: 2

GET /r2/old-guide
HTTP 301
Location: /middle
Cache-Control: no-store

GET /middle
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

После

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r2/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

R03 · Два URL образуют цикл

Ожидаемый результат
Старый адрес и /r3/loop направляют друг к другу без конечного документа.
Предлагаемое действие
Замените начальное правило прямым переходом на /guide.
Критерий приёмки
Остановка по циклу исчезает; наблюдаются ответы 301 и 200.

Ссылка на исходной странице · без изменений

GET /publisher/r3
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r3/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 2

GET /r3/old-guide
HTTP 301
Location: /r3/loop
Cache-Control: no-store

GET /r3/loop
HTTP 301
Location: /r3/old-guide
Cache-Control: no-store

URL повторился: остановка до нового запроса · /r3/old-guide

После

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r3/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

R04 · Главная доступна, но цель неверна

Ожидаемый результат
Читатель ждёт руководство, а /home содержит общую навигацию. Обе фазы заканчиваются 200.
Предлагаемое действие
Укажите подходящий /guide вместо произвольной доступной страницы.
Критерий приёмки
Проверьте путь и тело ответа. Это не наблюдённая классификация soft 404 в Google.

Ссылка на исходной странице · без изменений

GET /publisher/r4
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r4/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r4/old-guide
HTTP 301
Location: /home
Cache-Control: no-store

GET /home
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Home</title></head><body><h1>Home</h1><p>General navigation, no replacement guide.</p></body></html>

Получен конечный ответ

После

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r4/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

R05 · Удалённый материал без замены

Ожидаемый результат
Материал окончательно удалён; /home не отвечает его назначению.
Предлагаемое действие
Верните 410 для этого случая и уберите устаревшие внутренние ссылки.
Критерий приёмки
Старый URL отвечает 410; замена и восстановление позиций не выдумываются.

Ссылка на исходной странице · без изменений

GET /publisher/r5
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r5/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r5/old-guide
HTTP 301
Location: /home
Cache-Control: no-store

GET /home
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Home</title></head><body><h1>Home</h1><p>General navigation, no replacement guide.</p></body></html>

Получен конечный ответ

После

Запросы после исходной страницы: 1 · Ответы с перенаправлением: 0

GET /r5/old-guide
HTTP 410
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Unavailable</title></head><body><h1>Not available</h1></body></html>

Получен конечный ответ

R06 · Временный переезд помечен постоянным

Ожидаемый результат
Исходный сервис вернётся; /holding — временное уведомление.
Предлагаемое действие
Используйте 302 для данного GET и запланируйте восстановление.
Критерий приёмки
То же уведомление открывается через 302 вместо 301; старый кеш и поисковую обработку проверяют отдельно.

Ссылка на исходной странице · без изменений

GET /publisher/r6
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r6/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r6/old-guide
HTTP 301
Location: /holding
Cache-Control: no-store

GET /holding
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Temporary notice</title></head><body><h1>Temporary notice</h1><p>The original service is expected to return.</p></body></html>

Получен конечный ответ

После

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r6/old-guide
HTTP 302
Location: /holding
Cache-Control: no-store

GET /holding
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Temporary notice</title></head><body><h1>Temporary notice</h1><p>The original service is expected to return.</p></body></html>

Получен конечный ответ

R07 · Правильное постоянное правило сохраняется

Ожидаемый результат
Старое руководство уже достигает подходящей замены через один 301.
Предлагаемое действие
Оставьте рабочее правило как контроль.
Критерий приёмки
Доказательства до и после идентичны; ненужная правка не предлагается.

Ссылка на исходной странице · без изменений

GET /publisher/r7
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Local source</title></head><body><h1>Source page</h1><a href="/r7/old-guide">Reference</a></body></html>

До

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r7/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

После

Запросы после исходной страницы: 2 · Ответы с перенаправлением: 1

GET /r7/old-guide
HTTP 301
Location: /guide
Cache-Control: no-store

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8
Cache-Control: no-store

<!doctype html><html lang="en"><head><title>Replacement guide</title></head><body><h1>Replacement guide</h1><p>Equivalent guide content for the declared mapping.</p></body></html>

Получен конечный ответ

Запустить примеры

Исследуйте пути перенаправления

Семь проверенных локальных HTTP-примеров, а не сканирование вашего сайта. Исходная ссылка и ответы показаны отдельно. Поисковик и индекс ссылок не опрашиваются.

Нужен Python 3.10 или новее. Распакуйте ZIP локально. Проверка запускает временный loopback-сервер, тестирует все случаи, выводит JSON и завершается. Внешние сайты не запрашиваются.

python3 redirect_lab.py --verify

Остановите сервер через Ctrl+C и запустите с --phase after, чтобы проверить те же URL с исправленными правилами. Если порт 8766 занят, выберите другой локальный порт.

python3 redirect_lab.py --phase before --port 8766

python3 redirect_lab.py --phase after --port 8766

http://127.0.0.1:8766/publisher/r1

http://127.0.0.1:8766/r1/old-guide

http://127.0.0.1:8766/publisher/r2

http://127.0.0.1:8766/r2/old-guide

http://127.0.0.1:8766/publisher/r3

http://127.0.0.1:8766/r3/old-guide

http://127.0.0.1:8766/publisher/r4

http://127.0.0.1:8766/r4/old-guide

http://127.0.0.1:8766/publisher/r5

http://127.0.0.1:8766/r5/old-guide

http://127.0.0.1:8766/publisher/r6

http://127.0.0.1:8766/r6/old-guide

http://127.0.0.1:8766/publisher/r7

http://127.0.0.1:8766/r7/old-guide

Считаются показанные GET-запросы после исходной страницы. Предел в шесть запросов относится к учебному клиенту, а не Googlebot. Конечный ответ может быть ошибкой; 200 не доказывает релевантность.

Команды и пути — технические идентификаторы; текст отчёта переведён.

Индексация, выбор канонического адреса, трафик и позиции не измеряются. Процент переданного авторитета не рассчитывается.

Индексация, выбор канонического адреса, трафик и позиции не измеряются. Процент переданного авторитета не рассчитывается.