本文最后更新于 505 天前,其中的信息可能已经有所发展或是发生改变。
一般来说访问网站默认使用的http协议80端口,现在又大部分开启了SSL使用https协议443端口。这两个端口在用户输入网址访问的时候是不需要填写的,但是有的时候80端口被占用或者被封的情况下,我也不想填写端口访问啊。我琢磨了几个小时,正好又是使用的cloudflare解析域名,利用cloudflare自带的301重定向解决了这个问题。正文开始。
创建页面规则
打开cloudflare–页面规则–创建页面规则
每个域名有3个免费页面规则,刚刚好实现我的想法。详情查看常规教程。
页面仅在cloudflare添加了代理的DNS规则解析才能使用,也就是开启了CDN黄色云朵。仅代理的dns记录是不走页面规则的,比如ddns用的二级域名。
重定向到子域名
以我的域名举例,第一栏填写 主域名/*,设置为 转发URL-301永久重定向。
这一步主要是主域名的重定向,重定向到https协议8443端口,www域名(为了域名规范好看)。这一步可以省略,不是必须的!你也可以把www
换成其他子域名,或者使用其他端口。
星号 (*) 字符是通配符的意思,表示任意字符。从左到右,第一个 星号 (*) 字符在后面使用 $1
表示,第二个用 $2
表示,如果有更多要求以此类推。在这里就是下级目录。
这里设置生效后,访问 dswang.ga/*
会在云端重定向到 https://www.dswang.ga:8443/*
,省去了手动输入一大堆字符的麻烦。
HTTP端口的重定向
如果访问 http://*:80
则会重定向到 http://*:8880
主要是80端口重定向到8880端口。这一条规则只重定向子域名,不会重定向主域名。
HTTP端口的重定向
HTTPS协议设置同理,只是将端口443重定向到8443。
原理分析
浏览器访问源服务器,需要经过cloudflare解析,类似于这个
在流量经过cloudflare的时候,cloudflare会按照页面规则自动转换url。在云端转换好后可以直接访问我们的服务器,不会被运营商拦截端口。达到我们想要的目的。