Laravel sitemap is a robust and easy-to-use solution designed to automatically generate sitemaps for your Laravel application.
You can require the package and it's dependencies via composer:
composer require fuelviews/laravel-sitemap
You can manually publish the config file with:
php artisan vendor:publish --provider="Fuelviews\Sitemap\SitemapServiceProvider" --tag="sitemap-config"
This is the contents of the published config file:
return [
/**
* Specifies the default filesystem disk that should be used.
* The 'public_path' disk is typically used for files that need to be publicly accessible to users.
* This setting can influence where files, such as generated sitemaps, are stored by default.
*/
'disk' => 'public',
/**
* Determines whether the index page should be excluded from the sitemap.
* Setting this to `true` will exclude the index page, `false` will include it.
*/
'exclude_subcategory_sitemap_links' => true,
/**
* Controls whether redirect URLs should be excluded from the sitemap.
* When set to `true`, all redirects are excluded to ensure the sitemap only contains direct links.
*/
'exclude_redirects' => true,
/**
* An array of route names to be excluded from the sitemap.
* Useful for excluding specific pages that should not be discoverable via search engines.
*/
'exclude_route_names' => [
],
/**
* Specifies paths that should be excluded from the sitemap.
* Any routes starting with these paths will not be included in the sitemap, enhancing control over the sitemap contents.
*/
'exclude_paths' => [
],
/**
* An array of full URLs to be excluded from the sitemap.
* This allows for fine-grained exclusion of specific pages, such as sitemap files or any other URLs not suitable for search engine indexing.
*/
'exclude_urls' => [
'/sitemap.xml',
'/pages_sitemap.xml',
'/posts_sitemap.xml',
],
/**
* Specifies the model class to be used for fetching posts to be included in the sitemap.
* This setting allows for customization of the source of content, enabling the sitemap to reflect the structure and content of your website accurately.
* The specified model should implement any necessary logic to retrieve only the posts that should be visible to search engines.
*/
'post_model' => [
//App\Models\Post::class,
],
];
You can also add your models directly by implementing the Spatie\Sitemap\Contracts\Sitemapable interface. You also need to define your post_model in the fv-sitemap.php config file.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Contracts\Sitemapable;
use Spatie\Sitemap\Tags\Url;
class Post extends Model implements Sitemapable {
/**
* Convert the Post model instance into a sitemap URL entry.
*
* @return \Spatie\Sitemap\Tags\Url
*/
public function toSitemapUrl() {
$url = Url::create(url("{$this->id}"))
->setLastModificationDate($this->updated_at)
->setChangeFrequency('daily')
->setPriority(0.8);
return $url;
}
}
You can generate the sitemap with:
php artisan sitemap:generate
You can link to the sitemap with:
route('sitemap', ['filename' => 'sitemap.xml'])
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you've found a bug regarding security please mail [email protected] instead of using the issue tracker.
Fuelviews is a web development agency based in Portland, Maine. You'll find an overview of all our projects on our website.
The MIT License (MIT). Please see License File for more information.