YunYouJun / valaxy

🌌 Next Generation Static Blog Framework (Beta) 下一代静态博客框架(支持页面/配置热重载)
https://valaxy.site
MIT License
720 stars 86 forks source link

[求助]观察到奇怪的重定向现象(直接访问会先跳404或首页) #429

Closed lkyu-ly closed 2 months ago

lkyu-ly commented 2 months ago

Describe the bug

直接访问链接,包括但不限于文章、友链等,都会出现先跳404或首页,在进入正常页面的现象。跳哪个取决于是否有vercel.json, 下面详述:

已查阅类似的issue https://github.com/YunYouJun/valaxy/issues/364 ,但未能理解()。首先可以确保用于测试的链接无中文。

commit ID 页面部署实例 现象
03a0b73 https://lkyu-blog-valaxy-cunayn87z-lkyus-projects.vercel.app/ 任意文章、友链、归档等页面刷新跳404
9da8014
在上一commit基础上添加了vercel.json
https://lkyu-blog-valaxy-ojkkdgzja-lkyus-projects.vercel.app/ 任意文章、友链、归档等页面刷新,页面标题会短暂变为博客title,然后跳至正常页面

希望得到解答和解决方法,谢谢

Reproduction

https://github.com/lkyu-ly/lkyu-blog-valaxy

System Info

System:
    OS: Windows 11 10.0.22631
    CPU: (16) x64 12th Gen Intel(R) Core(TM) i5-12500H
    Memory: 1.96 GB / 15.73 GB
  Binaries:
    Node: 20.7.0 - D:\Program Files\nodejs\node.EXE
    npm: 10.8.2 - ~\AppData\Local\pnpm\npm.CMD
    pnpm: 9.7.0 - ~\AppData\Local\pnpm\pnpm.CMD
  Browsers:
    Edge: Chromium (127.0.2651.74)
    Internet Explorer: 11.0.22621.3527

Used Package Manager

yarn

Validations

YunYouJun commented 2 months ago

看起来 https://yun.valaxy.site/ 不会复现。

可以测试一下 netlify 和 cloudflare,应该是 Vercel 独有的问题。

Vercel 的普通静态页面刷新时不知为何无法正常自动路由到 xxx.html,vercel.json 的 rewrite 则是一个 SPA 的回退方案。

YunYouJun commented 2 months ago

测试了下这么写,好像 OK。

{
  "rewrites": [
    {
      "source": "/:path*",
      "destination": "/:path*.html"
    }
  ]
}
lkyu-ly commented 2 months ago

修改测试完成,问题解决了,详见 commit aa10dcf , 测试页面 感谢!

Big-Cake-jpg commented 2 months ago

看起来 https://yun.valaxy.site/ 不会复现。

可以测试一下 netlify 和 cloudflare,应该是 Vercel 独有的问题。

Vercel 的普通静态页面刷新时不知为何无法正常自动路由到 xxx.html,vercel.json 的 rewrite 则是一个 SPA 的回退方案。

Vercel 默认不启用 cleanUrls 选项(即删除链接中的 .html 后缀),而 Valaxy 默认以 cleanUrls 的形式生成站内各导航链接。

建议添加一个选项,让用户决定是否启用 cleanUrls 选项(就像 VitePress 一样)。

Cloudflare Pages、Netlify、GitHub Pages 默认支持 cleanUrls

YunYouJun commented 2 months ago

看起来 yun.valaxy.site 不会复现。 可以测试一下 netlify 和 cloudflare,应该是 Vercel 独有的问题。 Vercel 的普通静态页面刷新时不知为何无法正常自动路由到 xxx.html,vercel.json 的 rewrite 则是一个 SPA 的回退方案。

Vercel 默认不启用 cleanUrls 选项(即删除链接中的 .html 后缀),而 Valaxy 默认以 cleanUrls 的形式生成站内各导航链接。

建议添加一个选项,让用户决定是否启用 cleanUrls 选项(就像 VitePress 一样)。

Cloudflare Pages、Netlify、GitHub Pages 默认支持 cleanUrls

Thanks, I found it.

https://vitepress.dev/guide/routing#generating-clean-url

Do you want to add this for docs deploy? https://valaxy.site/guide/deploy#vercel

And update template vercel.json:

lkyu-ly commented 2 months ago

谢谢,这顺带解决了我另一个vitepress网站去掉.html访问的时候,网页框架会显示出来,但该页内容丢失的问题 : )

image