域名CNAME记录不能同时适配根域名和www的解决方法
问题
CNAME 记录一般情况是不能设置 www 和根域名同时适配的,只能添加 www 记录,为了解决这个问题,就需要用到边缘 JavaScript 。
解决
边缘 JavaScript
很多 cdn 商家都提供边缘 JavaScript 的功能。
- 比如 Cloudflare ,就提供一个 workers 功能,可以让用户在访问到源站前执行一个边缘的 JavaScript 脚本(在 cdn 的节点上执行),这就为很多操作提供了可能,比如跳转。
- 比如阿里云也有 EdgeRoutine 功能,是一个边缘 Serverless 计算环境,也可以提供边缘的 JavaScript,其他商家自行探索。
下面就简单介绍下 Cloudflare 的边缘 js 功能,因为他是不收费也可以使用的。
使用 workers
- 先切换到 workers 栏,管理 workers 并添加一个脚本。
- 编辑你的 js 脚本代码如下:
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request))
})/*** Respond to the request* @param {Request} request*/
async function handleRequest(request) {const init = {headers: {'content-type': 'text/html;charset=UTF-8',},}return new Response(renderHTML(), init);
}function renderHTML() {return `<!DOCTYPE html><script>window.location.href = 'https://domain.com'</script>`
}
函数 | 作用 |
---|---|
addEventListener | 脚本自带的,提供一个类似 fetch api |
handleRequest | 需要异步执行,并且给 html 响应头,否则返回的是纯文本 |
renderHTML | 返回 html 页面,并给出跳转 |
管理路由,进入添加一条 www 规则的路由,再添加一条根域名的路由。
用 A 记录解析主域名与 www 域名,必须要解析 ip 地址才能运行边缘 js,否则 dns 上都没有这条记录是没法分发到 cdn 节点执行 js 的,当然,解析的 ip 随意,比如 8.8.8.8 。
至此就可以等待解析生效访问根域名与 www 域名进行跳转了,当然,不同的 js 也可以做不同的事情,有什么需求就写什么 js ,甚至识别不同 url 做手动分发等。
思考
- 可以用边缘 js 来做很多事情,比如博客,当然,要自己规划资源,毕竟免费版只提供一个 js 可写,所有的内容都要包括,付费版可以有自己的存储空间。
- cdn 是可以一定程度上防 d 的,或者安排自己的防火墙规则,这是好处。
- cloudflare 是减速器,人人皆知,这是坏处。
- cloudflare 偶尔炸过,毕竟是免费的服务,可以选择购买付费版(昂贵)。
其他
可能说只为了跳转这个需求的话,那直接做 url 重定向或者 301/302 就好了,话虽如此,如果域名还配备了域名邮箱服务的二级 CNAME 记录的话,就不能用全站跳转,也就是说,这种方式可以很好的实现有其他二级域名提供服务的同时只对我们需要的进行跳转。
域名CNAME记录不能同时适配根域名和www的解决方法相关推荐
- 查看域名cname记录
查看域名cname记录 nslookup -qt=cname www.baidu.com 好了,这就是查看域名cname记录的方法了,如有问题可与博主一起交流讨论!
- 记录一次docker导致宿主机重启故障解决方法
记录一次docker导致宿主机重启故障解决方法 参考文章: (1)记录一次docker导致宿主机重启故障解决方法 (2)https://www.cnblogs.com/caidingyu/p/1215 ...
- 安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
安装.Net Framework 4.6.2时出现"无法建立到信任根颁发机构的证书链"解决方法 参考文章: (1)安装.Net Framework 4.6.2时出现"无法 ...
- 记录阿里云ECS实例重启之后无法登录解决方法(亲身实践)
提示:记录阿里云ECS实例重启之后无法登录解决方法 文章目录 前言 一.重启实例以后重新修改密码后无法登录? 二.咨询阿里云客服 1.查看远程禁止登录状态 2.进行修改 前言 一.重启实例以后重新修改 ...
- GoDaddy域名添加不带www的域名CNAME记录
前言 最近一直在搭建个人博客,在GoDaddy购买了一个.me的域名,打算将它绑定到Coding上的博客项目但是在添加CNAME记录时发现GoDaddy竟然不能直接解析不带www的域名,这就有点尴尬了 ...
- nginx: [warn] conflicting server name 这里是域名 eg:abc.com on 0.0.0.0:80, ignored解决方法
网上看了说是冲突,可是解决方法说的不细致. 解决方向如下: 在/usr/local/nginx/conf/vhost 下面有很多配置文件,出现这个错误,说明域名有重复,在多个配置文件中都有这个域名. ...
- 毕业设计记录-yolov5的wandb报错,原因和解决方法(非屏蔽wandb)
2021.12.26的记录 第一次用yolov5 代码:https://github.com/ultralytics/yolov5 每次运行到29轮就会报这个错误.虽然把wandb删掉就不会报错.但是 ...
- win7系统中Fiddler根证书创建失败的解决方法
问题: win7系统,安装Fiddler,一直提示"根证书创建失败": 解决办法: 在Fiddler的安装路径下打开cmd命令行,输入下面的命令: makecert.exe -r ...
- 安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法
在安装.NET Framework 4.7.2时出现如下错误 1.错误 尚未安装.NET Framework 4.7.2,原因是:已处理证书链,但是在不受信任提供程序信任的根证书中终止. 2.解决方法 ...
最新文章
- GAN完整理论推导与实现,Perfect!
- C语言--static全局使用示例
- Jmeter响应内容显示乱码问题的解决办法
- 关于Kafka 的 consumer 消费者手动提交详解
- 【AtCoder】AGC017
- 以下构成python循环结构的方法中正确的是_python教程:python循环结构
- 使用Blend开发Silverlight VSM
- 对话英特尔高级副总裁 Raja:软件将为硬件释放无限潜力
- 第二次作业(贪吃蛇)
- spring定时器详解
- java登录验证码_java实现登录验证码
- VBA自动创建数据透视表
- 使用redis缓存来实现最近的浏览记录
- 记账小程序 微信小程序 源码 uniapp vue3
- 第2章 应用层-计算机网络
- 13岁残疾、35岁离异……43岁这年她将和全球最美王妃同台……
- CRAFT:Character region awareness for text detection 论文阅读
- 中国废弃电器电子产品回收处理行业发展格局与投资风险可行性报告2022~2027年
- webservice的安全问题
- 滴水课后作业(6-10)