Что такое карта сайта и почему она полезна для SEO?
Next.js набирает огромную популярность в веб-сообществе благодаря удобству для поисковых систем и простоте настройки. Хотя Next.js имеет множество полезных функций, вы можете сделать все возможное, создав карты сайта для своего веб-сайта и отправив их в различные поисковые системы. Погодите, а какие даже карты сайта?
Карта сайта - это файл, который содержит подробную информацию о страницах, видео и других файлах ресурсов на вашем веб-сайте и соответствующих отношениях между ними. Карты сайта помогают поисковым системам, таким как Google и Yahoo, лучше понимать взаимосвязь между вашими веб-страницами и, следовательно, обеспечивать их более правильную индексацию.
Вот как будет выглядеть пример sitemap.xml
файла трехстраничного веб-сайта:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://www.example.net/</loc> <lastmod>2009-09-22</lastmod> </url> <url> <loc>https://www.example.net/about</loc> <lastmod>2009-09-22</lastmod> </url> <url> <loc>https://www.example.net/blog</loc> <lastmod>2009-09-22</lastmod> </url> </urlset>
Карта сайта может не понадобиться, если у вас небольшой веб-сайт или если страницы в вашем приложении хорошо связаны. Вы даже можете написать свой собственный статический XML-файл, если ваши веб-страницы не часто меняются. У Google есть исчерпывающее руководство, в котором подробно описывается, как лучше всего действовать в ваших личных целях.
Если вы все же решили создать карту сайта, а ваш сайт основан на Next.js, продолжайте читать!
Шаг 1. Настройка и структура проекта
Если у вас еще нет проекта Next.js, вы можете настроить стартер, следуя инструкциям в официальном учебнике Next.js.
Большинство веб-сайтов Next.js имеют статические и динамически сгенерированные страницы, находящиеся внутри каталога pages
. Чтобы прочитать эти имена страниц, мы установим globby
- пакет NPM, который может перемещаться по файловой системе и возвращать пути.
yarn add --dev globby
Это единственная внешняя зависимость, которая нам понадобится для нашего скрипта создания карты сайта.
Создание карты сайта состоит из двух частей. Давайте посмотрим на стандартную структуру проекта Next.js.
|- pages/ |- about.js # about page |- blog/ # blog folder |- index.js # default blog |- [id].js. # dynamically generated blog posts
|- components/ |- MainComponent.jsx # Main component |- OtherComponents.jsx # Other component
Во-первых, нашему скрипту необходимо пройти по файловой системе и найти имена статических файлов (в данном случае about.js и два файла index.js). Во-вторых, нам нужно добавить все наши динамические страницы ([id] .js) в нашу карту сайта. В этом случае просмотр файловой системы не сработает, так как нам нужно будет знать все URL-адреса наших страниц. Мы займемся этим на шаге 3. Сначала мы создаем карту сайта для всех наших статических страниц.
Шаг 2. Написание скрипта, генерирующего карту сайта.
Когда у нас есть базовая настройка, мы можем написать небольшой скрипт для создания карты сайта. Я написал свой на utils/sitemap.js
, но не стесняйтесь выбирать папку по вашему выбору! Следующий скрипт затем преобразует все наши статические файлы в путевые имена, а затем выгружает их в XML-файл, к которому можно будет получить доступ в нашем общедоступном каталоге по адресу public/sitemap.xml
.
Я добавил несколько комментариев к сути, которые более подробно объясняют, что происходит.
Короче говоря, мы используем globby
для получения путей из наших каталогов (игнорируя наши маршруты api и другие страницы, которые мы не хотим включать в нашу карту сайта). Затем мы сопоставляем их и генерируем запись в форме <url><loc></url>
для каждого из них. Простой!
Шаг 3. Обновите файл next.config.js для запуска сценария во время сборки.
Теперь, когда мы написали наш первоначальный скрипт, нам нужно обновить конфигурацию нашего веб-пакета в нашем файле next.config.js, чтобы сгенерировать карту сайта во время сборки. Обязательно обновите путь к файлу в соответствии со структурой вашего проекта! Теперь, когда вы запустите yarn dev
или npm run dev
, вы должны получить sitemap.xml
файл, созданный в вашей public/
папке.
module.exports = { webpack: (config, { isServer }) => { if (isServer) { require('./src/utils/sitemap.js') } return config } };
Шаг 4. Обработка динамических страниц (или страниц, созданных с помощью внешнего API)
Одна из ключевых особенностей Next.js - это возможность создавать динамические страницы. Мы не учли эти динамические страницы в нашем исходном скрипте, но их довольно просто добавить. Реализация будет отличаться в зависимости от источника ярлыков, используемых для генерации URL-адресов ваших динамических страниц. Если ваши страницы получены из внешнего API или CMS (например, Contentful), вам нужно будет получить параметры [id] этих страниц, прежде чем вы сможете сгенерировать для них карту сайта.
Вы можете хранить их в базе данных, напрямую получать их из CMS или иметь список имен страниц в файле json, но идея остается той же: запросить этот список и сопоставить имена для формирования экземпляра <loc>
в файле карты сайта. . Легкий!
В этом примере мы будем использовать внешний api. Отличный API для фиктивных данных доступен по адресу https://jsonplaceholder.typicode.com/. Мы будем запрашивать поддельные сообщения и использовать идентификаторы этих сообщений для создания наших страниц.
Окончательный код должен выглядеть примерно так, с пояснениями ниже.
Короче говоря, мы взяли список образцов сообщений из нашего внешнего источника и сопоставили их, чтобы сгенерировать соответствующие пути URL-адресов. Теперь, если вы запустите npm run dev
или yarn dev
, вы должны получить новый файл public/sitemap.xml
, который будет содержать содержимое вашей карты сайта.
После того, как вы развернете свой веб-сайт, ваша карта сайта станет доступна по адресу https://YOUR_URL/sitemap.xml
, и вы сможете использовать свою уникальную ссылку для отправки карты сайта в различные поисковые системы (например, в Search Console).
И это все, ребята! Нам удалось создать карту сайта как для наших статически написанных, так и для динамически генерируемых страниц! Теперь, когда вы добавляете новые страницы, статически написанные или динамически генерируемые, и запускается новая сборка, ваша карта сайта будет автоматически обновляться, и поисковые системы смогут эффективно сканировать их. Удачного кодирования!