我正在关注Pelican文档中的Tip #2以在GitHub页面上使用自定义域。为了使其正常工作,CNAME
文件必须位于我的网站的根目录。
来自doc:
要将自定义域与GitHub页面一起使用,您需要将站点的域放在站点根目录下的
CNAME
文件中。为此,请创建content/extra/
目录并向其添加CNAME
文件。然后使用STATIC_PATHS
设置告诉Pelican将此文件复制到输出目录。例如:STATIC_PATHS = ['images', 'extra/CNAME'] EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}
我做到了这一点。我的pelicanconf.py
有以下两种设置:
STATIC_PATHS = ['images', 'extra/CNAME']
EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}
我已创建了CNAME
文件并将其放在content/extra/CNAME
中,如文档中所述。
我发布了这样的应用程序:
pelican content --output output --settings pelicanconf.py
这会在output
目录中生成我的网站。页面都已正确设置。但是,CNAME
不在根。相反,它位于extra/CNAME
位置。
发布时我没有收到任何错误或警告。如果我使用--debug
参数发布,则此行显示在输出中:
-> Copying H:\mysite\content\extra\CNAME to extra/CNAME
这清楚地表明它将其复制到extra
而不是根目录。根据文档,我已正确设置STATIC_PATHS
和EXTRA_PATH_METADATA
以将其复制到根目录。如何更改设置以便将CNAME
复制到正确的位置而不是extra
目录?
答案 0 :(得分:2)
maggick在评论中的评估是正确的。
中有一点提及这可能是与Windows相关的问题吗?
由相对路径键入的额外元数据字典。 与某些其他Pelican文件设置不同,相对路径需要正确的特定于操作系统的目录分隔符(即在UNIX中和/在Windows中)。请参阅路径元数据。
(重点是我的)
Path metadata文档或tips中没有提到这些信息,我都在使用这两种信息。
我的解决方案,因为我在Windows上运行它,是要改变:
EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}
为:
EXTRA_PATH_METADATA = {'extra\CNAME': {'path': 'CNAME'},}
^ This is OS specific
注意字典键中单个更改的斜杠。
答案 1 :(得分:0)
奇怪这种行为。文档清楚地提到即使在Windows中你也需要使用正斜杠。
来自readthedocs Pelican 3.6.4 - 最新版本
STATIC_PATHS = ['images', 'extra/CNAME']
EXTRA_PATH_METADATA = {'extra/CNAME': {'path': 'CNAME'},}
注意:使用正斜杠,即使在Windows上也是如此。 但这个解决方案有效。