Что такое 301 статус ответа сервера?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое 301 статус ответа сервера
301 Moved Permanently — это HTTP статус код, который означает, что ресурс постоянно переместился на новый URL. Сервер сообщает клиенту (браузеру или приложению), что текущий адрес больше не используется, и все будущие запросы должны идти на новый адрес.
Основные характеристики
301 Moved Permanently:
- Редирект постоянный — кэшируется браузерами и поисковиками
- Метод запроса может измениться:
POST→GET(хотя стандарт говорит сохранять метод) - Поисковики обновляют индекс и передают ранг старого URL на новый
- Используется, когда URL навсегда устаревает
Структура ответа
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/old-page')
def old_page():
# 301 редирект на новый URL
return redirect('/new-page', code=301)
@app.route('/new-page')
def new_page():
return 'Это новая страница'
# HTTP ответ:
# HTTP/1.1 301 Moved Permanently
# Location: /new-page
# Content-Length: 0
Примеры использования
1. Переименование страницы:
# Старый URL больше не используется
/blog/old-article-name → /blog/new-article-name
2. Переезд на новый домен:
# Все страницы старого сайта перемещены на новый домен
http://old-site.com → https://new-site.com
3. Удаление www:
http://www.example.com → https://example.com
FastAPI пример
from fastapi import FastAPI
from fastapi.responses import RedirectResponse
app = FastAPI()
@app.get('/old-endpoint')
async def old_endpoint():
return RedirectResponse(url='/new-endpoint', status_code=301)
@app.get('/new-endpoint')
async def new_endpoint():
return {'message': 'Это новый endpoint'}
301 vs 302 vs 307
301 Moved Permanently (постоянный):
# Кэшируется браузером
# Поисковики обновляют ссылки
# Бесплатно переносит SEO вес старого URL
return redirect('/new-url', code=301)
302 Found (временный):
# Не кэшируется долго
# Поисковики не обновляют индекс
# Используется для временных переводов
return redirect('/temporary-url', code=302) # По умолчанию в Flask
307 Temporary Redirect:
# Гарантирует сохранение метода запроса
# POST остаётся POST, не становится GET
return redirect('/temp-url', code=307)
Влияние на SEO
Плюсы 301:
- Поисковики узнают, что URL постоянно изменился
- Передаёт PageRank (ранг) на новый URL
- Улучшает консолидацию кэша и авторитета
Минусы неправильного редиректа:
# Неправильно: 302 вместо 301
# Поисковики думают, что это временно
# SEO вес не передаётся
return redirect('/new-url', code=302) # НЕПРАВИЛЬНО ДЛЯ ПОСТОЯННОГО ПЕРЕЕЗДА
Django пример
from django.shortcuts import redirect
from django.views import View
class OldBlogView(View):
def get(self, request, *args, **kwargs):
# 301 редирект на новый URL
return redirect('new-blog', permanent=True) # permanent=True = 301
class NewBlogView(View):
def get(self, request, *args, **kwargs):
return render(request, 'blog.html')
Проблемы и ошибки
Цепные редиректы (плохо):
# URL A → 301 → URL B → 301 → URL C
# Медленно и может привести к потере SEO веса
# Реши напрямую: URL A → 301 → URL C
Редирект на неправильный статус код:
# Неправильно
return redirect('/new-url') # По умолчанию 302, а не 301
# Правильно
return redirect('/new-url', code=301)
Редирект в цикл:
# URL A перенаправляет на URL A — бесконечный цикл!
# Браузер выдаёт "ERR_TOO_MANY_REDIRECTS"
@app.get('/page')
def page():
return redirect('/page', code=301) # НИКОГДА ТАК НЕ ДЕЛАЙ
Как проверить 301 редирект
# curl показывает статус код
curl -I https://example.com/old-page
# HTTP/1.1 301 Moved Permanently
# Location: https://example.com/new-page
# -L флаг следует редиректам
curl -L https://example.com/old-page
Когда использовать 301
✅ Используй 301:
- Переименование страницы (навсегда)
- Переезд на новый домен
- Консолидация похожих URL
- Смена структуры URL (www/без www)
❌ НЕ используй 301:
- Временные переводы (используй 302 или 307)
- Сезонные переводы
- A/B тестирование
Практический совет
Для постоянного переезда всегда используй 301:
@app.route('/old-path')
def old_path():
# Постоянный редирект
return redirect('/new-path', code=301)
301 статус гарантирует, что поисковики и браузеры правильно обновят свои кэши и ссылки на новый URL, сохраняя весь накопленный SEO вес и авторитет.