Nội dung
Tạo một sitemap là một phần quan trọng trong việc tối ưu hóa công việc SEO cho trang web của bạn. Đặc biệt với Laravel, một framework phổ biến trong phát triển web, việc tạo sitemap có thể được thực hiện một cách dễ dàng và hiệu quả. Trong phần này, chúng ta sẽ khám phá cách tạo một sitemap trong Laravel để giúp trang web của bạn dễ dàng được index hơn trên các công cụ tìm kiếm như Google.
I. Cài đặt package.
Đầu tiên, chúng ta cần cài đặt một gói được gọi là spatie/laravel-sitemap. Bạn có thể cài đặt nó bằng Composer bằng cách chạy lệnh sau:
composer require spatie/laravel-sitemap
Sau khi quá trình cài đặt spatie/laravel-sitemap hoàn tất, bạn thêm cấu hình bên dưới vào file config/app.php và đoạn cấu hình này bạn thêm ở phần providers
Spatie\Sitemap\SitemapServiceProvider::class,
Tiếp đến là bạn publish cấu hình, ta sử dụng artisan với lệnh như bên dưới:
php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=sitemap-config
Với lệnh artisan này sẽ sao chép cấu hình mặc định sang config/sitemap.php nơi bạn có thể chỉnh sửa.
II. Tạo controller.
Trước tiên, bạn cần tạo hoặc sử dụng một controller đã tồn tại trong ứng dụng Laravel của bạn. Nếu bạn chưa có controller nào, bạn có thể tạo một controller mới bằng cách sử dụng lệnh Artisan như sau:
php artisan make:controller SitemapController
Trong đó:
SitemapController: Là tên file controller sẽ tạo.
Lệnh này sẽ tạo một file controller mới có tên là SitemapController.php trong thư mục app/Http/Controllers.
Tiếp đến bạn cần phải chạy lệnh sau để cập nhật tất cả các tệp autoload của Composer.
composer dump-autoload
Sau khi đã cập nhật, bạn mở file SitemapController.php và thêm cấu hình như sau:
<?php
namespace App\Http\Controllers;
use Spatie\Sitemap\SitemapGenerator;
class SitemapController extends Controller
{
public function generateSitemap()
{
SitemapGenerator::create('https://example.com')->writeToFile(public_path('sitemap.xml'));
}
}
Trong đó:
example.com: Bạn thay thành tên miền của bạn.
writeToFile(public_path(‘sitemap.xml’)): Phương thức trên đối tượng SitemapGenerator để viết sitemap vào một file cụ thể. Trong ví dụ này, sitemap sẽ được viết vào tệp sitemap.xml trong thư mục public của ứng dụng Laravel.
Tiếp đến bạn thêm một cấu hình route như bên dưới vào file routes/web.php, để có thể gọi phương thức này từ một route.
Route::get('/sitemap.xml', [
SitemapController::class,
'generateSitemap'
]);
Như vậy phương thức generateSitemap() trong controller sẽ được gọi và việc tạo sitemap đã hoàn tất, bây giờ bạn truy cập tên_miền/sitemap trên trình duyệt để tạo file sitemap.xml.
Lưu ý: Khi bạn truy cập tên_miền/sitemap.xml lần đầu tiên thì sẽ không hiển thị nội dung gì mà chỉ trắng trang. Bạn đừng lo, vì khi truy cập lần đầu là để tạo file sitemap.xml. Bạn F5 lại trang thì sẽ hiển thị nội dung sitemap của bạn.
III. Cập nhật sitemap thường xuyên.
Trang web của bạn có thể sẽ được cập nhật theo thời gian. Để sitemap của bạn phản ánh những thay đổi này, bạn có thể chạy trình tạo định kỳ. Hoặc cách dễ nhất để làm điều này là sử dụng khả năng lập lịch mặc định của Laravel.
1. Tạo một lệnh mới bằng lệnh Artisan.
Để tạo một lệnh(command) mới bạn chạy lệnh sau:
php artisan make:command GenerateSitemap
Điều này sẽ tạo một lệnh mới có tên là GenerateSitemap trong thư mục app/Console/Commands.
2. Cấu hình file lệnh command.
Tiếp đến bạn mở file app/Console/Commands/GenerateSitemap.php và thay đổi cấu hình như sau:
<?php
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
*/
protected $description = 'Generate the sitemap.';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// modify this to your own needs
SitemapGenerator::create('https://example.com')->writeToFile(public_path('sitemap.xml'));
}
}
Trong lớp GenerateSitemap, bạn sẽ thấy hai phương thức signature và handle. Phương thức signature xác định tên của lệnh và các tùy chọn dòng lệnh mà lệnh này hỗ trợ. Còn phương thức handle là nơi bạn đặt logic xử lý cho lệnh và bạn thay example.com thành tên miền của bạn.
Sau đó trong tệp App\Console\Kernel.php, bạn thêm đoạn mã sau vào phương thức schedule():
$schedule->command('sitemap:generate')->daily();
Như vậy là bạn đã hoàn tất việc thiết lập khả năng lập lịch mặc định của Laravel.
Để kiểm tra bạn sử dụng lệnh artisan sau:
php artisan schedule:list
Hy vọng rằng hướng dẫn này đã giúp bạn hiểu rõ hơn về quá trình tạo sitemap trong Laravel và cách nó có thể hỗ trợ trong việc tối ưu hóa trang web của bạn cho SEO. Hãy áp dụng và theo dõi sự cải thiện trong hiệu suất tìm kiếm của trang web của bạn!
Chúc bạn thực hiện thành công.
Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:
- Hotline 247: 028 888 24768
- Ticket/Email: Bạn dùng email đăng ký dịch vụ gửi trực tiếp về: support@azdigi.com.