3.4 KiB
3.4 KiB
Архитектурные решения: Роутинг, SEO-редиректы
Дата и время создания: 02.08.2026 23:45
Проект: LPON.RU (Django 6.0+, Python 3.12)
Статус: Согласованная архитектура
1. Стратегия Роутинга и SEO
1.1. Плоский единый роутер из корня (/<slug>/)
- Отказываемся от искусственных служебных префиксов в URL (например,
/hub/<slug>/). Все статьи, хабы, музыкальные стили и категории живут на первом уровне:lpon.ru/vinyl/,lpon.ru/cassettes/,lpon.ru/about/. - В
urls.pyв самом конце списка роутов устанавливается универсальный Catch-All роут:path('<slug:slug>/', views.UniversalSlugView.as_view(), name='universal_slug')
1.2. Безопасная обработка отсутствующих слагов (HTTP 200 Заглушка)
- Проблема 404: Если в шапке/подвале/каталоге есть ссылка на раздел (например,
/vinyl/), но в базе данных соответствующая статьяTbArticleсо слагомvinylещё не создана, отдавать честную 404-ошибку вредно для SEO (поисковики штрафуют за битые ссылки с главных страниц). - Решение:
- Диспетчер ищет
slugвTbArticle(и смежных справочниках). - Если статья со слагом не найдена — вместо ответа
404 Not Foundвозвращается HTTP 200 OK со специальным шаблоном-заглушкой (hub_placeholder.html). - Для обычного пользователя отображается аккуратная витрина: "Раздел находится в процессе наполнения".
- Для авторизованного администратора (
request.user.is_staff) выводится специальное информационное сообщение: "Настрой, дубинушка, вот такой слаг (slug) в админке, и всё починится!".
- Диспетчер ищет
1.3. SEO-оптимизация и 301 Permanent Redirects для специализированных разделов
- Если страница найдена по общему роуту
/<slug>/, но еёl_article_typeуказывает на строго профильный раздел (например,l_article_type == 'blog'илиl_article_type == 'item'), и у этой сущности есть свой канонический префиксный путь (например,/blog/<slug>/или/item/<slug>/):- Сервер выполняет HTTP 301 Permanent Redirect с общего пути
/<slug>/на канонический адрес/blog/<slug>/.
- Сервер выполняет HTTP 301 Permanent Redirect с общего пути
- Зачем это нужно:
- Исключает появление дублей страниц в индексе поисковых систем (Яндекс / Google).
- Чётко разграничивает контентные материалы (новости, статьи) и торговые предложения/хабы.