# SEO для Яндекса и Google Публичные страницы главной и новостей отдают метатеги и основной HTML до запуска JavaScript. При переходах Inertia обновляет тот же набор тегов через `serverHead`. Заголовок, описание и текст главной ориентированы на PvP сервер WoW Vanilla, версию клиента и рейты из `config/moonwell.php`. Название проекта также берётся из конфигурации. Позиции в поиске зависят и от содержания, ссылок и конкуренции; SEO-настройки обеспечивают техническую готовность к индексации. ## Настройка production ```dotenv APP_ENV=production APP_URL=https://moon-well.online MOONWELL_SEO_INDEXABLE=true GOOGLE_SITE_VERIFICATION= YANDEX_SITE_VERIFICATION= ``` `APP_URL` — единственный источник домена для canonical, sitemap и разметки. Используйте основной HTTPS-адрес без `www`, если сайт работает именно на нём. На уровне внешнего nginx настройте постоянный редирект HTTP и альтернативного домена на этот адрес. Для стендов задайте `MOONWELL_SEO_INDEXABLE=false`: robots.txt запретит обход, а HTML получит `noindex`. По умолчанию индексация включается только при `APP_ENV=production`. В `GOOGLE_SITE_VERIFICATION` и `YANDEX_SITE_VERIFICATION` вставляются только значения `content` из проверочных метатегов соответствующего сервиса. Пустые значения не создают метатеги. После изменения `.env` пересоздайте production-контейнер приложения, чтобы загрузить переменные, и обновите кеш: ```bash docker compose -f compose.prod.yaml up -d --no-deps --force-recreate app docker compose -f compose.prod.yaml exec -T --user app app php artisan config:cache ``` ## Подключение поисковых систем 1. Добавьте сайт в [Google Search Console](https://search.google.com/search-console) и [Яндекс Вебмастер](https://webmaster.yandex.ru/). Для проверки метатегом выберите ресурс по URL в Google и заполните переменные выше. Можно также подтвердить домен через DNS средствами самих сервисов. 2. Отправьте `https://moon-well.online/sitemap.xml` в оба сервиса. Карта автоматически содержит главную, список новостей и опубликованные статьи с датами последнего изменения. Черновики, личный кабинет, вход, юридические документы и административные страницы в карту не попадают. 3. Проверьте главную и одну новость инструментом проверки URL Google и инструментами проверки страниц Яндекса, затем запросите переобход главной. 4. Проверьте robots.txt: ресурсы `/build/`, изображения и `/storage/` доступны роботам. Закрыты API, файлы лаунчера и техническая проверка состояния. Страницы входа, кабинета и администрации имеют `noindex`; robots.txt не запрещает их обход, чтобы робот мог прочитать запрет индексации. У страниц новостей `?page=2` и далее собственный canonical и номер страницы в заголовке. Метки рекламы и другие параметры в canonical не включаются. Несуществующие страницы пагинации и неопубликованные новости возвращают 404. Разметка JSON-LD описывает сайт и страницы, а для новостей — `NewsArticle` с заголовком, изображением и датами. Open Graph и Twitter Card поддерживают превью ссылок. Проверочные коды для поисковых систем остаются на всех HTML-страницах. Реализация учитывает рекомендации [Google по JavaScript SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), [Google по sitemap](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap) и [Яндекса по robots.txt](https://yandex.ru/support/webmaster/ru/controlling-robot/robots-txt).