Laravel 9 Создание и чтение Sitemap XML
Руководство по динамической XML-карте сайта Laravel 9. В этом руководстве мы поговорим о создании динамического файла sitemap.xml в приложении laravel. Но прежде чем мы начнем ломать лед, позвольте объяснить, что такое XML-карта сайта и насколько важно добавить XML-файл карты сайта в приложение laravel.
SEO и карты сайта
В общем, все мы слышали о SEO, и это не просто ключевое слово; скорее, это слово определяет популярность веб-приложений. SEO определяет рейтинг вашего сайта в поисковых системах.
Поэтому наша важнейшая задача — нарастить SEO сайта, чтобы он лучше ранжировался.
Есть несколько факторов, которые усиливают SEO сайта; добавление XML-файла карты сайта является одним из факторов, которые мы изучаем в этом руководстве.
Зачем нужен Sitemap Xml?
В конце концов, мы узнали, почему xml карта сайта имеет вес. Теперь давайте разберемся, что такое карты сайта?
Карта сайта в идеале представляет собой файл с расширением .xml, это простой файл, который содержит важные страницы веб-сайта и позволяет веб-мастеру информировать поисковые системы о том, какие страницы доступны для сканирования.
Этот файл карты сайта не ограничивается только laravel, независимо от того, какую технологию вы используете, но убедитесь, что вы должны сгенерировать и добавить XML-файл карты сайта для информирования поисковых систем.
Структура карты сайта
Вот логическая структура файла карты сайта, мы объясним по крупицам каждое свойство, используемое в следующем файле карты сайта.
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.test.com/</loc> <lastmod>2021-03-05</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> </urlset>
- Он начинается с открывающего тега относительно закрывающего тега.
<urlset></urlset>
- Свойство xmlns , используемое для определения префикса пространства имен внутри тега.
<urlset>
- XML-файл содержит запись URL-адреса для каждого URL-адреса, который необходимо добавить в файл Sitemap.
- Свойство loc — это дочернее значение URL-адреса, которое содержит URL-адрес веб-страницы .
- Атрибут lastmod — это дочерний элемент URL, который показывает , когда страница была изменена в последний раз.
- Атрибуты changefreq и priority являются относительными дочерними значениями свойства url ; эти реквизиты сообщают поисковой системе о приоритете сканирования и частоте обновления.
Создание модели и миграции
Файлы модели и миграции определяют логическую структуру таблицы, которая находится в базе данных; не двигаясь, небо и земля исполняют данную команду.
В демонстрационных целях создайте таблицу блогов со значениями URL (URL веб-страницы) и описания, поместите следующий код в файл app/Models/Blog.php .
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Blog extends Model { use HasFactory; protected $fillable = [ 'url', 'description' ]; }
Точно так же поместите те же значения в файл database/migration/create_blogs_table.php.
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateBlogsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('blogs', function (Blueprint $table) { $table->id(); $table->string('url'); $table->text('description'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('blogs'); } }
Теперь миграция готова к запуску, просто нажмите следующую команду в терминале и переместите новую таблицу в базу данных.
php artisan migrate
Добавление фиктивных данных
Затем добавьте тестовые данные в таблицу; это поможет создать URL-адрес или слаг для создания XML-карты сайта. Однако вы можете пропустить весь этот раздел, если у вас есть реальные данные для создания веб-страниц.
php artisan make:factory BlogFactory --model=Blog
Библиотека faker предлагает множество методов для создания тестовых данных; тем не менее, мы используем метод randomNumber() для генерации данных URL.
Поместите приведенный ниже код в файл database\factories\BlogFactory.php :
<?php namespace Database\Factories; use App\Models\Blog; use Illuminate\Database\Eloquent\Factories\Factory; class BlogFactory extends Factory { /** * The name of the factory's corresponding model. * * @var string */ protected $model = Blog::class; /** * Define the model's default state. * * @return array */ public function definition() { return [ 'url' => $this->faker->randomNumber($nbDigits = NULL, $strict = false), 'description' => $this->faker->text ]; } }
Когда все настроено, используйте команды tinker для заполнения данных в базе данных.
php artisan tinker Blog::factory()->count(30)->create()
Сгенерируйте и настройте контроллер
Командная строка php artisan предлагает достаточно чистое и простое решение для создания контроллеров и другого важного файла. Сгенерируем новый контроллер предложенной командой.
php artisan make:controller SitemapXmlController
Функция index() получает данные блога и безукоризненно вставляет их в представление индекса; позже мы получим к нему доступ, чтобы прочитать XML-файл карты сайта. Поэтому обновите файл app/Http/Controllers/SitemapXmlController.php .
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Blog; class SitemapXmlController extends Controller { public function index() { $posts = Blog::all(); return response()->view('index', [ 'posts' => $posts ])->header('Content-Type', 'text/xml'); } }
Регистрация маршрута
Затем перейдите к файлу route/web.php ; внутри здесь определите маршрут с помощью метода get; это помогает нам читать XML-файл карты сайта в браузере.
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SitemapXmlController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- */ Route::get('/sitemap.xml', [SitemapXmlController::class, 'index']);
Показать URL-адрес карты сайта в Laravel
В заключительном разделе этого подробного руководства мы объясним, как отобразить XML-файл карты сайта или прочитать XML-файл карты сайта в браузере с помощью блейд-файла laravel.
Обязательно создайте новый файл index.php в папке resources/Views/.
Сразу после этого добавьте указанный код в файл resources/views/index.blade.php .
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> @foreach ($posts as $post) <url> <loc>{{ url('/') }}/page/{{ $post->url }}</loc> <lastmod>{{ $post->created_at->tz('UTC')->toAtomString() }}</lastmod> <changefreq>weekly</changefreq> <priority>0.8</priority> </url> @endforeach </urlset>
Запуск приложения Laravel
Наконец, мы должны убить двух зайцев одним выстрелом, сначала запустите приложение laravel с помощью команды php artisan serve; во-вторых, просмотрите XML-файл карты сайта, используя приведенный ниже URL-адрес.
php artisan serve http://127.0.0.1:8000/sitemap.xml
Заключение
В этом прагматическом руководстве по XML-карте сайта laravel мы затронули важную концепцию, которая в первую очередь относится к SEO, и поняли, как создать файл XML-карты сайта в laravel.
Мало того, мы также научились читать карту сайта xml в представлении laravel, используя традиционный шаблон laravel MVC. Мы предполагаем, что вам понравилось это руководство, спасибо за прочтение.