Самый простой способ сделать карту сайта (sitemap) для проекта на yii2

Sitemap — файл с информацией для поисковых систем о страницах сайта, которые подлежат индексации. Карта сайта может помочь поисковикам определить местонахождение страниц сайта, время их последнего обновления, частоту обновления и важность относительно других страниц сайта для того, чтобы поисковая машина смогла более разумно индексировать сайт.

В контроллер SiteController.php добавляю новый action, например actionMap.

public function actionMap() {
        $urls = array();
        $categories = CATEGORY::find()->all();
        foreach ($categories as $category) {
            $urls[] = array(
                Yii::$app->urlManager->createUrl(
                ['/category/' . $category->id . '/' . $category->slug])
                , 'daily'
            );
        }
        $posts = ARTICLE::find()->all();
        foreach ($posts as $post) {
            $urls[] = array(
                Yii::$app->urlManager->createUrl(
                ['/post/' . $post->id . '/' . $post->slug])
                , 'weekly'
            );
        }
        $xml_sitemap = $this->renderPartial('map', array(
            'host' => Yii::$app->request->hostInfo,
            'urls' => $urls,
        ));
        Yii::$app->response->format = \yii\web\Response::FORMAT_XML;
        echo $xml_sitemap;
    }

Дальше нужен вид. Создаем его.

<?php
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
    <? foreach($urls as $url): ?>
    <url>
        <loc><?= $host . $url[0] ?></loc>
        <changefreq><?= $url[1] ?></changefreq>
        <priority>0.5</priority>
    </url>
    <? endforeach; ?>
</urlset>

Теперь, для красоты в urlManager можно добавить следующее правило:

return [
        'urlManager' => [
            'rules'=> [
                 ...
                'sitemap.xml' => 'site/map',
                 ...
             ]
        ]
]

Карта сайта (sitemap) будет доступна по адресу http://DOMEN/sitemap.xml