Generar un sitemap en laravel 8 con laravel-sitemap

Generar un sitemap en laravel 8 con laravel-sitemap

El sitemap o mapa del sitio es un archivo en el que proporciona información sobre las páginas, los vídeos y otros archivos de su sitio, y las relaciones entre ellos. Los motores de búsqueda como Google leen este archivo para rastrear su sitio de manera más inteligente. Es como un índice donde indicamos a los robots o arañas de los buscadores que contenido de nuestra web queremos que sea indexado. Este archivo suele estar en código xml.

Ejemplo de un sitemap:

< urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">   

     < url>     

          < loc>http://www.example.com/< /loc>     

          < lastmod>2012-04-30< /lastmod>     

          < changefreq>monthly< /changefreq>     

          < priority>1.0< /priority>   

     < /url>   

En este artículo vamos a crear el sitemap utilizando el paquete de Spatie llamado laravel-sitemap. Con él, lograremos que este archivo se vaya creando automáticamente para que esté actualizado con todos los cambios de nuestra web. Comencemos.

Instalación

Lo primero que vamos a hacer es descargar el paquete via composer. Para ellos debemos ejecutar en la consola el siguiente comando:

composer require spatie/laravel-sitemap

Cuando ya este instalado ejecutaremos en consola el siguiente comando:

php artisan make:command GenerateSitemap

Ahora se nos crea un nuevo archivo dentro de la carpeta App/Console/Commands/GenerateSitemap.php. Vamos al documento y reemplazamos todo lo que hay por el siguiente código:

namespace App\Console\Commands;

 use Illuminate\Console\Command

use Spatie\Sitemap\SitemapGenerator

 

class GenerateSitemap extends Command

     /** 

   * The console command name. 

    * 

     * @var string 

     */ 

      protected $signature = 'sitemap:generate'; 

     /** 

     * 

     The console command description. 

     * 

     * @var string 

     */ 

     protecte $description = 'Generando el sitemap de la web.'; 

     /** 

     * Execute the console command. 

     *

      * @return mixed 

     */

      public function handle() { 

          // modify this to your own needs 

          SitemapGenerator::create(config('app.url'))

                ->writeToFile(public_path('sitemap.xml'));

           }

      }

Si queremos, podemos modificar las opciones predeterminadas para el navegador. Para ello debemos primero publicar la configuración:

php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=config

Esto nos creara un archivo en la carpeta config llamado sitemap.php con las configuraciones que podemos modificar.

Para finalizar ya solo queda generar el archivo sitemap.xml en la carpeta public. Esto lo conseguimos con el siguiente comando:

php artisan sitemap:generate

Este comando rastreara nuestra web, como los robots o arañas de los buscadores, encontrando todas las rutas que hay(excluendo las que tengan no-index). Para finalizar, creara un archivo con todos los enlaces  y lo colocará en la carpeta public. Para poder verlo solo tenemos que poner el nombre del dominio de nuestra web seguido de /sitemap.xml:

            https://ejemplo.com/sitemap.xml

Con esto ya tendríamos creado nuestro sitemap. Sin embargo, todavía hay un problema. Cada vez que agreguemos algo a nuestra web habría que ejecutar de nuevo el comando para que también aparezca en el sitemap. Si publicamos una vez a la semana o al mes, puede que no sea molesto pero, si publicamos cada hora o con frecuencia si lo es.

Para solucionar esto vamos a programar una tarea para que ejecute este código de manera automática cada cierto tiempo. Podremos ponerle que lo haga por horas, diariamente, semanalmente, etc… Para esto iremos al archivo App\Console\Kernel.php y pondremos el siguiente código.

protected function schedule(Schedule $schedule)

{

       $schedule->command('sitemap:generate')->daily();

La función schedule nos permite programar las tareas. En el ejemplo anterior, le estamos diciendo que ejecute el comando sitemap:generate todos los días. Así conseguimos que nuestra web tenga siempre el sitemap actualizado y no tengamos que estar pendientes a él. 

Este paquete es muy personalizable y nos permitirá crear varios sitemap con un índice para dirigirse a ellos. Esto hace mucho más legible los enlaces, tanto para humanos, como para los robots. Si quieres visitar la documentación oficial y ,seguir aprendiendo de las posibilidades de este paquete, puedes hacerlo en este link: https://github.com/spatie/laravel-sitemap/blob/master/README.md

Espero te haya gustado y te ayude este artículo. Si tienes alguna duda solo déjala en los comentarios.

0 Comentarios

Deja un comentario

Debes estar registrado para poder comentar

Privacidad