YunYouJun / valaxy

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

[功能建议]文章永久链接 #237

Closed arcoe closed 4 months ago

arcoe commented 1 year ago

我在看valaxy文档时,似乎并没有看到永久链接相关的功能

相关链接:

YunYouJun commented 1 year ago

valaxy 的链接取决于你新建文件的标题名,同一个文件夹下并不会存在多个文件。在我看来,这已经解决了链接唯一性的问题,此外我认为语义化的链接也更为优雅。

你所期待的需求是什么?

mirari commented 1 year ago

从hexo迁移后,原本文章的永久链接比如a.com/2023/09/01/foobar会变成a.com/posts/2023-09-01-foobar。 以前在其他地方做的跳转都会失效,逐个修改会比较麻烦,甚至有些是没法修改的。 是否有办法实现地址映射,将原本hexo规则的URL指向新的地址? 单纯的静态部署似乎没法支持,或者是在对应路径生成同名落地页然后跳转?

YunYouJun commented 1 year ago

可以放置在 /2023/09/01 的文件夹下。

或是新建 __redirects (cloudflare 和 netlify 支持)添加重定向。

/rss https://yyj.moe/feed.xml 301
/blog https://yunyoujun.cn 301

/github https://github.com/YunYouJun 301
/twitter https://twitter.com/YunYouJun 301
/sponsors https://sponsors.yunyoujun.cn 301
/live https://live.bilibili.com/822719 301

地址映射在 Valaxy 的未来开发计划中,但暂时还未实现。(得再等一等了,或者欢迎 PR。

mirari commented 1 year ago

因为博客迁移,这几天谷歌广告和谷歌搜索都报了好多404错误。 我看现在任何不存在的请求都会被跳转到404.html,是否可以在404落地页面或者router上加个钩子,然后做跳转。

YunYouJun commented 1 year ago

因为博客迁移,这几天谷歌广告和谷歌搜索都报了好多404错误。 我看现在任何不存在的请求都会被跳转到404.html,是否可以在404落地页面或者router上加个钩子,然后做跳转。

如果是已经跳转到了 404 页面,这时候再加钩子应该是没用的。

可以做一个 301 redirects。

YunYouJun commented 1 year ago

或者你想要的其实是不是就是一个 a -> b 路径的重定向?

感觉也可以通过一个数组脚本来做,批量生产带有 window.location.href = new link 的页面。


https://developers.cloudflare.com/pages/platform/redirects/

cloudflare 支持 redirects 和 proxy。

mirari commented 1 year ago

我在404.vue落地页做了一个跳转逻辑,如果route.path匹配就跳转,缺点是会先看到404再跳过去

const redirectTarget = redirectList.find(x => {
  const regex = /(\d{4})-(\d{2})-(\d{2})-(.*)/;
  const result = x.from.replace(regex, '/$1/$2/$3/$4');
  return encodeURI(result) === route.path || result === route.path
})
if (redirectTarget) {
  router.replace(`/posts/${redirectTarget.to}`)
}
[
  {
    "from": "2017-08-14-aaa",
    "to": "aaa"
  },
  {
    "from": "2017-08-27-bbb",
    "to": "bbb"
  },
]

github pages应该没办法做301了吧,看来还得迁移到cloudflare去

YunYouJun commented 1 year ago

也可以加一个后处理脚本,直接拷贝一下 dist/xxx.html 为 dist/yyy.html。

(貌似这个也可以做个功能

YunYouJun commented 4 months ago

See https://valaxy.site/guide/config#%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%87%8D%E5%AE%9A%E5%90%91