django-robots-and-sitemap 1.0.2
A Django plugin that adds support for sitemap.xml and robots.txt
License: MIT
Requires Python: >=3.6

# 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+

## Установка
```shell
pip install django-robots-and-sitemap
```

## Быстрый старт
#### 1. Добавьте приложение в `INSTALLED_APPS`:
```python
# settings.py
INSTALLED_APPS = [
    # ...
    'robots_and_sitemap',
    # ...
]
```

#### 2. Добавьте URL-маршруты в ваш основной `urls.py`:
```python
# 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:

```python
# 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
```ini
# robots.txt
User-agent: *
Allow: /

# Sitemap будет автоматически добавлен если отсутствует
```

### Пример sitemap.xml
```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`
```python
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)

## Разработка
### Установка для разработки
```shell
git clone https://github.com/MagIlyasDOMA/django-robots-and-sitemap.git
cd django-robots-and-sitemap
pip install -e .
```

## Лицензия
MIT License. См. файл [LICENSE](https://github.com/MagIlyasDOMA/django-robots-and-sitemap/blob/main/LICENSE) для подробностей.

## Автор
#### Маг Ильяс DOMA (MagIlyasDOMA)
- Email: magilyas.doma.09@list.ru
- GitHub: [MagIlyasDOMA](https://github.com/MagIlyasDOMA)

## Вклад в проект
Приветствуются пул-реквесты и сообщения о проблемах. Пожалуйста, создавайте issue на GitHub перед началом работы над большими изменениями.

## Поддержка
Если у вас возникли проблемы или вопросы:

1. Проверьте, что файлы robots.txt и sitemap.xml существуют по указанным путям
2. Убедитесь, что настройки ROBOTS_PATH и SITEMAP_PATH указаны корректно
3. Проверьте права доступа к файлам
4. Создайте issue на [GitHub](https://github.com/MagIlyasDOMA/django-robots-and-sitemap/issues)

---

**Примечание:** Это приложение не генерирует sitemap.xml автоматически. Оно только обслуживает существующие статические файлы. Для динамической генерации sitemap используйте стандартный Django-фреймворк sitemaps или другие специализированные приложения.