Jekyll plugin to silently generate a sitemaps.org compliant sitemap for your Jekyll site
gem 'jekyll-sitemap'
to your site's Gemfile and run bundle
_config.yml
:url: "https://example.com" # the base hostname & protocol for your site
plugins:
- jekyll-sitemap
💡 If you are using a Jekyll version less than 3.5.0, use the gems
key instead of plugins
.
If all gem plugins have the same priority
, they will be executed in the
order they are required, generally. Thus, if you have other plugins which
generate content and store that content in site.pages
, site.posts
, or
site.collections
, be sure to require jekyll-sitemap
either after
those other gems if you want the sitemap to include the generated
content, or before those other gems if you don't want the sitemap to
include the generated content from the gems. (Programming is hard.)
Because the sitemap is added to site.pages
, you may have to modify any
templates that iterate through all pages (for example, to build a menu of
all of the site's content).
The GitHub Pages gem ignores all plugins included in the Gemfile. If you only include jekyll-sitemap
in the Gemfile without also including it in the _config.yml
the plugin will not work. This can be confusing because the official Jekyll docs state that plugins can be included in either the Gemfile or _config.yml
.
When building a site that uses the GitHub Pages gem, follow the instructions above and ensure that jekyll-sitemap
is listed in the plugins
array in _config.yml
.
:warning: If you are using Jekyll < 3.5.0 use the gems
key instead of plugins
.
<lastmod>
tagThe <lastmod>
tag in the sitemap.xml
will reflect by priority:
jekyll-last-modified-at
plugin installed (not compatible with GitHub Pages auto building)last_modified_at:
with a date in the Front Matterpost.date
variable)If you would like to exclude specific pages/posts from the sitemap set the
sitemap flag to false
in the front matter for the page/post.
sitemap: false
To exclude files from your sitemap. It can be achieved with configuration using Jekyll v3.7.2 and jekyll-sitemap v1.2.0.
Add a glob config to your _config.yml
file.
defaults:
-
scope:
path: "assets/**/*.pdf"
values:
sitemap: false
Follow these instructions on Jekyll's documentation.
script/bootstrap
to bootstrap your local development environment.script/console
to load a local IRB console with the Gem.script/bootstrap
script/cibuild
sitemap.xml
doesn't generate in the _site
folder, ensure _config.yml
doesn't have safe: true
. That prevents all plugins from working.sitemap.xml
doesn't generate in the _site
folder, ensure that you don't have a sitemap generator plugin in your _plugin
folder.