Что означает HTTP-статус ответа 301 Moved Permanently?

Ответ

301 Moved Permanently — это HTTP-код состояния, который сообщает клиенту (например, браузеру или поисковому роботу), что запрошенный ресурс был навсегда перемещен на новый URL, указанный в заголовке Location.

В отличие от временного редиректа 302 Found, 301 указывает на постоянное изменение.

Как это работает:

  1. Клиент запрашивает /old-url.
  2. Сервер отвечает статусом 301 и заголовком Location: /new-url.
  3. Клиент автоматически делает новый запрос на /new-url.
  4. Браузеры могут кэшировать этот редирект, а поисковые системы передают "вес" (ranking power) со старой страницы на новую.

Пример на Python с использованием Flask:

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/old-page')
def old_page():
    # Возвращаем ответ с кодом 301 и новым URL
    return redirect(url_for('new_page'), code=301)

@app.route('/new-page')
def new_page():
    return "Это новая страница!"

Основные сценарии использования:

  • SEO: При смене URL-адреса страницы для сохранения её позиций в поисковой выдаче.
  • Смена домена: Перенаправление всего трафика со старого домена на новый.
  • Рефакторинг структуры сайта: При изменении путей к разделам или статьям.