Jekyll菜单链接出现404页面未找到错误的问题求助
解决Jekyll链接404:干净URL vs 带.html文件名的问题
嘿,我刚帮好几个Jekyll新手搞定过一模一样的问题!你的核心矛盾很清晰:Jekyll默认生成的是「干净URL」(比如/people),但你上传到name.com主机后,实际存在的文件是people.html,服务器没法自动把/people映射到people.html,所以才会跳404。你提到的两种解决方向完全正确,我给你拆解具体操作步骤:
方向1:让Jekyll生成带.html的链接
直接从源头修改Jekyll的输出,让它生成的链接和实际文件名一致:
- 打开你的Jekyll项目根目录下的
_config.yml文件 - 添加或修改
permalink配置项:
这个规则会让每个页面的链接变成「域名/页面标题.html」的格式,比如你的permalink: /:title.htmlpeople页面会生成https://myurl.com/people.html,和上传的文件名完全匹配。 - 如果你之前在某些页面的front matter里自定义过
permalink(比如在页面顶部写了permalink: /people),记得要么删掉这个自定义项,要么同步改成permalink: /people.html - 重新执行
bundle exec jekyll build,把新生成的_site文件夹内容上传到name.com的public_html目录,问题就能解决了。
方向2:配置name.com主机支持干净URL
如果你想保留/people这种简洁的URL格式,可以让服务器自动把无后缀的路径映射到对应的.html文件:
- 大部分name.com的主机用的是Apache服务器,你需要在
public_html目录下创建一个.htaccess文件(注意文件名开头有个点,是隐藏文件) - 在
.htaccess里添加以下规则:RewriteEngine On # 如果请求的不是文件或目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 自动添加.html后缀 RewriteRule ^(.*)$ $1.html [L] - 保存后把
.htaccess上传到public_html根目录,确保文件权限设置为644(服务器能读取) - 这样当用户访问
https://myurl.com/people时,服务器会自动去找people.html文件,不会再返回404了。
两种方案的小建议
- 方向1操作简单,不需要碰服务器配置,适合刚接触Jekyll的新手,缺点是URL会多一个
.html后缀 - 方向2能保持更美观的干净URL,用户体验更好,但需要你对服务器配置有一点点了解
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

