如何使用 Jekyll site.pages 生成 sitemap.xml
How to use Jekyll site.pages to generate sitemap.xml
我正在尝试使用 site.pages 在 Jekyll(GitHub 页)中自动生成 sitemap.xml
,这是我得到的 sitemap.xml
代码:
---
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in site.pages %}
<url>
<loc>https://example.com{{ page.url | remove: 'index.html' }}</loc>
</url>
{% endfor %}
</urlset>
它的输出类似于:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/samplepage.html</loc>
<!--<loc>https://example.com/samplepage</loc>-->
</url>
</urlset>
我的目标是生成一个 sitemap.xml 而不是注释行中尾随的 .html
。我试过 gsub
(我假设 Jekyll 采用 Ruby 语法:Replace words in string - ruby)但它似乎没有改变任何东西或完全删除 page.url。
如果有人可以,我将不胜感激
- 修改 Jekyll 语法,使其生成 URLs 而没有尾随的
.html
.
- 解释
| remove: 'index.html'
的语法(从生成的 sitemap.xml
中删除 URL https://example.com/index.html
)。
我对 Jekyll 非常陌生,如果这个问题看起来微不足道,我深表歉意。
Jekyll 使用 Liquid process templates. The pipe syntax is a Liquid filter:
Filters are simple methods. The first parameter is always the output of the left side of the filter. The return value of the filter will be the new left value when the next filter is run. When there are no more filters, the template will receive the resulting string.
remove
是 standard Liquid filters 之一,所以 Jekyll 文档没有列出它。
如果您的根文件夹中有此文件,页面 URL 很简单:
samplepage.html # https://example.com/samplepage.html
相反,如果您有:
samplepage/
index.html # https://example.com/samplepage/index.html
# https://example.com/samplepage/
页面 URL 最终成为文件夹名称,如果您使用第二个 link.
,服务器将自动提供里面的 index.html
文件
site.pages
会给你第一个link。由于您有一个从路径中删除 index.html
的过滤器,因此您最终会得到 extension-free URLs.
Jekyll 文件夹中的任何文件都使用他的扩展名生成,除非您使用 permalink。
如果您像这样创建 sitemap.xml
文件:
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in site.pages %}
<url>
<loc>https://example.com{{ page.url | remove: 'index.html' }}</loc>
</url>
{% endfor %}
</urlset>
它将生成为 sitemap.xml
。
您也可以使用 jekyll-sitemap,github 页支持。
我正在尝试使用 site.pages 在 Jekyll(GitHub 页)中自动生成 sitemap.xml
,这是我得到的 sitemap.xml
代码:
---
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in site.pages %}
<url>
<loc>https://example.com{{ page.url | remove: 'index.html' }}</loc>
</url>
{% endfor %}
</urlset>
它的输出类似于:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/samplepage.html</loc>
<!--<loc>https://example.com/samplepage</loc>-->
</url>
</urlset>
我的目标是生成一个 sitemap.xml 而不是注释行中尾随的 .html
。我试过 gsub
(我假设 Jekyll 采用 Ruby 语法:Replace words in string - ruby)但它似乎没有改变任何东西或完全删除 page.url。
如果有人可以,我将不胜感激
- 修改 Jekyll 语法,使其生成 URLs 而没有尾随的
.html
. - 解释
| remove: 'index.html'
的语法(从生成的sitemap.xml
中删除 URLhttps://example.com/index.html
)。
我对 Jekyll 非常陌生,如果这个问题看起来微不足道,我深表歉意。
Jekyll 使用 Liquid process templates. The pipe syntax is a Liquid filter:
Filters are simple methods. The first parameter is always the output of the left side of the filter. The return value of the filter will be the new left value when the next filter is run. When there are no more filters, the template will receive the resulting string.
remove
是 standard Liquid filters 之一,所以 Jekyll 文档没有列出它。
如果您的根文件夹中有此文件,页面 URL 很简单:
samplepage.html # https://example.com/samplepage.html
相反,如果您有:
samplepage/
index.html # https://example.com/samplepage/index.html
# https://example.com/samplepage/
页面 URL 最终成为文件夹名称,如果您使用第二个 link.
,服务器将自动提供里面的index.html
文件
site.pages
会给你第一个link。由于您有一个从路径中删除 index.html
的过滤器,因此您最终会得到 extension-free URLs.
Jekyll 文件夹中的任何文件都使用他的扩展名生成,除非您使用 permalink。
如果您像这样创建 sitemap.xml
文件:
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in site.pages %}
<url>
<loc>https://example.com{{ page.url | remove: 'index.html' }}</loc>
</url>
{% endfor %}
</urlset>
它将生成为 sitemap.xml
。
您也可以使用 jekyll-sitemap,github 页支持。