我正在尝试使用site.pages在Jekyll(GitHub Pages)中自动生成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语法,以便它生成没有尾随
.html
的URL。说明
| remove: 'index.html'
的语法(从生成的https://example.com/index.html
中删除URL sitemap.xml
)。我对杰基尔(Jekyll)非常陌生,因此如果这个问题显得微不足道,我深表歉意。
最佳答案
Jekyll使用Liquid来process templates。管道语法为Liquid filter:
过滤器是简单的方法。第一个参数始终是过滤器左侧的输出。运行下一个过滤器时,过滤器的返回值将是新的左侧值。如果没有更多过滤器,模板将接收结果字符串。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最终是文件夹名称,如果您使用第二个链接,服务器将自动在其中提供
index.html
文件。site.pages
将给您第一个链接。当您有一个过滤器从路径中删除index.html
时,您最终得到extension-free URLs。关于jekyll - 如何使用Jekyll site.pages生成sitemap.xml,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31774327/