
Добавляем robots.txt в Next.js приложение
Важным элементом SEO-оптимизации является наличие файла robots.txt. В этой статье вы узнаете, что такое robots.txt и как добавить его в свое приложение на Next.js.
Что такое robots.txt?
Robots.txt - это текстовый файл, основанный на спецификации Robots Exclusion Protocol, который сообщает поисковым роботам (например Googlebot или Yandex), какие страницы они могут сканировать, а какие нет.
А так же указывает на файл sitemap.xml. О том что это такое и как добавить файл sitemap.xml читайте в статье «Добавляем sitemap.xml в Next.js приложение».
Robots.txt должен находиться в корневой папке вашего сайта, и обычно доступен по адресу:
Например, у этого блога он лежит по адресу https://alexeybaranov.dev/robots.txt и выглядит следующим образом:
Более подробную информацию о том как как поисковые системы обрабатывают файлы robots.txt можно найти в справке от Яндекса или документации Google.
Первый способ: Добавляем статический файл
Первый способ - очень простой. Next.js из коробки умеет отдавать статические файлы, например изображения, добавленные в папку public в корне проекта.
Этот же подход можно использовать для добавления файла robots.txt. Всё что необходимо сделать - добавить файл в папку public.
Подробнее про работу со статикой и папку public можно почитать в официальной документации Next.js.
Альтернативный способ добавления статического файла
Начиная с версии 13.3 Next.js умеет корректно обрабатывать статический файл robots.txt лежащий в корне папки app.
Подробнее в документации.
Второй способ: Динамическая генерация robots.txt
Для того чтобы динамически создавать файл robots.txt необходимо в папку app добавить файл robots.js или robots.ts, который будет возвращать объект типа MetadataRoute.Robots.
Данный код сгенерирует файл со следующим содержимым:
Кастомизация настроек в зависимости от user-agent
Так же есть возможность добавлять правила для различных user-agent.
На выходе получим следующий файл:
Спецификация MetadataRoute.Robots
Вот полная спецификация MetadataRoute.Robots, взятая из официальной документации.
Минусы динамической генерации и директива Clean-Param
К сожалению, динамическая генерация не поддерживает добавление кастомных директив в правила. Самым ярким примером кастомной директивы можно считать директиву Clean-Param, поддерживаемую Яндексом.
Для того чтобы её добавить придётся воспользовать либо первым способом (статический файл) либо каким-нибудь сторонним решением, например npm-пакетом next-sitemap.
Бонус: Валидация robots.txt
Для того чтобы удостовериться что содержимое robots.txt валидно и будет работать как и задумано, можно воспользоваться несколькими бесплатными инструментами:
На этом всё! 🎉
Подписывайтесь на мой Youtube канал, Telegram и на сообщество Вконтакте 🙂