Skip to main content

Django Robots and Sitemap

Простое Django-приложение для обслуживания файлов robots.txt и sitemap.xml с поддержкой автоматического добавления Sitemap в robots.txt.

Особенности

  • 📄 Автоматическое обслуживание robots.txt и sitemap.xml
  • 🔗 Автоматическое добавление ссылки на Sitemap в robots.txt (если отсутствует)
  • ⚙️ Настраиваемые пути к файлам через настройки Django
  • 🔒 Проверка существования файлов перед отдачей (возвращает 404 если файл не найден)
  • 📦 Простая установка и минимальные зависимости
  • 🐍 Поддержка Python 3.6+
  • 🎯 Поддержка Django 2.2+

Установка

pip install django-robots-and-sitemap

Быстрый старт

1. Добавьте приложение в INSTALLED_APPS:

# settings.py
INSTALLED_APPS = [
    # ...
    'robots_and_sitemap',
    # ...
]

2. Добавьте URL-маршруты в ваш основной urls.py:

# urls.py
from django.urls import path, include

urlpatterns = [
    # ...
    path('', include('robots_and_sitemap.urls')),
    # ...
]

3. Создайте файлы в корне вашего проекта:

- `robots.txt` - для правил robots.txt
- `sitemap.xml` - для карты сайта

Использование

Стандартная конфигурация

По умолчанию приложение ищет файлы в корневой директории Django проекта (BASE_DIR):

  • robots.txt - по пути BASE_DIR/robots.txt
  • sitemap.xml - по пути BASE_DIR/sitemap.xml

Приложение автоматически проверит наличие Sitemap: директивы в robots.txt и добавит её при необходимости.

Кастомизация путей к файлам

Вы можете указать собственные пути к файлам через настройки Django:

# settings.py
import os
from pathlib import Path

# Укажите абсолютные или относительные пути
ROBOTS_PATH = Path('/absolute/path/to/your/robots.txt')
# или
ROBOTS_PATH = BASE_DIR / 'static' / 'robots.txt'
# или
ROBOTS_PATH = os.path.join(BASE_DIR, 'custom_folder', 'robots.txt')

SITEMAP_PATH = BASE_DIR / 'static' / 'sitemap.xml'

Пример robots.txt

# robots.txt
User-agent: *
Allow: /

# Sitemap будет автоматически добавлен если отсутствует

Пример sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2024-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>

Настройки

Настройка Тип По умолчанию Описание
ROBOTS_PATH Path или str BASE_DIR / 'robots.txt' Путь к файлу robots.txt
SITEMAP_PATH Path или str BASE_DIR / 'sitemap.xml' Путь к файлу sitemap.xml

API

URL-маршруты

  • /robots.txt - возвращает содержимое файла robots.txt
  • /sitemap.xml - возвращает содержимое файла sitemap.xml

Декоратор file_exists

from robots_and_sitemap.decorators import file_exists
from pathlib import Path

@file_exists(Path('/path/to/file.txt'))
def my_view(request):
    # Код выполнится только если файл существует
    pass

Обработка ошибок

  • Если файл robots.txt или sitemap.xml не найден по указанному пути, возвращается HTTP 404
  • Автоматическое добавление Sitemap в robots.txt происходит только если:
    1. В robots.txt отсутствует строка с "Sitemap"
    2. Файл sitemap.xml существует и доступен

Требования

  • Python 3.6+
  • Django 2.2+
  • requests 2.0+ (для автоматического добавления Sitemap)

Разработка

Установка для разработки

git clone https://github.com/MagIlyasDOMA/django-robots-and-sitemap.git
cd django-robots-and-sitemap
pip install -e .

Лицензия

MIT License. См. файл LICENSE для подробностей.

Автор

Маг Ильяс DOMA (MagIlyasDOMA)

Вклад в проект

Приветствуются пул-реквесты и сообщения о проблемах. Пожалуйста, создавайте issue на GitHub перед началом работы над большими изменениями.

Поддержка

Если у вас возникли проблемы или вопросы:

  1. Проверьте, что файлы robots.txt и sitemap.xml существуют по указанным путям
  2. Убедитесь, что настройки ROBOTS_PATH и SITEMAP_PATH указаны корректно
  3. Проверьте права доступа к файлам
  4. Создайте issue на GitHub

Примечание: Это приложение не генерирует sitemap.xml автоматически. Оно только обслуживает существующие статические файлы. Для динамической генерации sitemap используйте стандартный Django-фреймворк sitemaps или другие специализированные приложения.

Metadata

Release files for django-robots-and-sitemap 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-robots-and-sitemap 1.0.2
File Size Uploaded
django_robots_and_sitemap-1.0.2.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-robots-and-sitemap 1.0.2
File Interpreter ABI Platform
django_robots_and_sitemap-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 12.7 kB

Release files / django_robots_and_sitemap-1.0.2.tar.gz

Download URL django_robots_and_sitemap-1.0.2.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
20e10d39c85fedbc401a0de531609ec6fab2291b27bcd19c6ec2f9b0716dabcf
BLAKE2b-256 checksum
How to use checksums
bd5979adca014ff9375b8a704fa000aafb1a06b912b1a80c7ff90e674d6f1384
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / django_robots_and_sitemap-1.0.2-py3-none-any.whl

Download URL django_robots_and_sitemap-1.0.2-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9009b572fc490606bf764bd0333143346c901829f4ce6bcb2caa479a2f958be
BLAKE2b-256 checksum
How to use checksums
b9ad7937267bd180525c804ce19d7b162a1350dff771a6098bd796c06fc4033a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page