最近这段时间脑子奇怪的想法总是很多,可能是出于对未来的焦虑吧,老是想着搞一下奇奇怪怪的副业,满脑子就是想着搞钱搞钱。

然后我搞了播客(喜马拉雅),又又又折腾起了我的小程序,得益于cursor,改的还挺好看的。

作为一个程序员,最开心的事情肯定还是别人用自己的产品,喜欢自己的产品,每天看着后台的数据就是沉思,为啥没有用户。哭唧唧

我在某乎开了一个专栏,打算专门写一点关于副业探索的问题。

https://zhuanlan.zhihu.com/column/c_1908528905893151235

而在这里,主要还是写一些代码相关的东西,这个系列,我打算用来写一些关于cloudflare的东西。

关于cloudflare

其实我一直都有在各个平台看到有朋友在说cloudflare,什么赛博活菩萨,什么“免费的 CDN 圣母”,搞得我一度以为这是个慈善组织。

这几天体验了之后,我只能说:牛逼!

买家不用花钱,卖家还得感恩。

从 CDN 加速、DNS 服务、WAF、防御 DDoS,到 Pages、KV、D1 数据库、Workers、R2 存储,Cloudflare 的一整个产品线就像一个开发者乐园,而且还是免门票的。你想部署前端?用 Pages。你想搞无服务器?Workers 走起。你想读写存储?KV、R2、D1 任你选,免费额度多到离谱,实在是“开卷之王”。

为啥用cloudflare

小胖大概从18年就开始折腾服务器,网站了。比起阿里云,一直比较喜欢用腾讯云,觉得腾讯云的界面好看一点。。

我现在这个网站、小程序啥的也都是用的腾讯云,可以说是腾讯云的铁粉了~

用cloudflare,当然是为了扬帆出海!我整了一个海外的域名,想着搞一些有趣的东西~

cloudflare是真的很好,用过之后的感受就两个字:舒坦

不过worker搞着搞着又让我想起了早几年在腾讯云折腾无服务器云函数的时光。。(当时也是想着白嫖~)

worker自定义路由

OK,说会这篇文章的主题:cloudflare的workers怎么配置自定义域名和路由。

下面我的域名统一写成 aaa.com,便于理解

先说说背景

我是有一个worker跑了一个静态页面,挂在了 aaa.com下面,然后我新开了一个工具静态页面,是一个新项目,想着把这个项目挂在aaa.com/tools/xxx 下面

这个其实比较好弄的,我们可以在worker的设置这里添加一个路由。

路由的配置如下:

区域选择你绑定好的域名,然后重点是下面的路由要把这个域也填上,而不能只写路径。

比如我的是aaa.com,那么这个路由要填aaa.com/xxx/xxx

这样才能正确添加。

这里还有一个注意的地方,添加路由这个功能只有workers才能,pages是不行的。

不过我们也可以在worker的wrangler.jsonc配置上面加上routes来实现这一步~

{
    "name": "你的worker名称",
    "compatibility_date": "2025-05-21",
    "assets": {
        "directory": "./out"   // 这个是我nextjs部署的输出文件夹
    },
    "routes": [
        { 
            "pattern": "aaa.com/xxxx/xxx*", 
            "custom_domain": false
        }
    ]
}

主项目的sitemap加上子项目的页面

nextjs项目的sitemap怎么自定义一个子项目的链接?

我的主项目里面配置了next-sitemap,现在是加了一个子项目,然后子项目单独部署了一个worker和路由到aaa.com下面,所以现在aaa.com/sitemap.xml 这个里面是不包含子项目的页面的,这个对于爬虫来说是不太友好的。

我们可以修改主项目next-sitemap.config.js,把子项目的路径加进去~

module.exports = {
  siteUrl: 'https://findaitools.site',
  generateRobotsTxt: true,
  changefreq: 'daily',
  priority: 0.7,
  sitemapSize: 9999,
  robotsTxtOptions: {
    policies: [
      {
        userAgent: '*',
        allow: '/',
      },
    ]
  },
  generateIndexSitemap: false,
  outDir: './out'
};
/** @type {import('next-sitemap').IConfig} */
module.exports = {
  siteUrl: 'https://findaitools.site',
  generateRobotsTxt: true,
  changefreq: 'daily',
  priority: 0.7,
  sitemapSize: 9999,
  robotsTxtOptions: {
    policies: [
      {
        userAgent: '*',
        allow: '/',
      },
    ]
  },
  generateIndexSitemap: false,
  outDir: './out',
  additionalPaths: async (config) => {
    const result = []
    
    // 添加新的子项目路由
    result.push({
      loc: '/xxx/xxx/',
      changefreq: 'daily',
      priority: 0.7,
      lastmod: new Date().toISOString(),
    })
    
    return result
  },
};

当前流量

贴一下当前的流量,这个外站的域名才注册几天,不过看起来好像还不错,希望能好起来吧。

结语

我仍然在探索,在踩坑,希望能有收获吧,也希望看到这篇文章的朋友也能得偿所愿。

关注我,不迷路!也欢迎大家关注我的公众号《编程挺好玩》,交流讨论更方便~

Snipaste_2024-12-07_11-05-00.png