继上次在自家服务器上搭建WordPress看起来过去了一些时日,一直苦恼于重定向次数过多的问题,
又是改nginx又是改数据库,但熬夜许久忽然发现解决方案如此简单。简单说一下要点就是:直接在wp-config.php编辑站点目录的define编码项目。
前置条件:
- 一个真正的域名,可创建SSL证书
- 可以映射端口转发的路由器、未被运营商封锁的端口,未被系统占用的端口
1.创建网站
在内网的Webinoly可以首先用site命令使用域名创建普通的WordPress网站,端口号80(开启SSL则为443),在局域网访问的情况下,域名的端口号其实应该能够直接连接,若是没有则修改客户机系统的hosts也能达到直连访问的目的。
此时也可以顺带申请一下SSL证书,不过由于公网端口封堵,因此只可选择dns txt验证方式:
sudo site domain.ltd -ssl=on -manual=dns
2.配置WordPress
随后根据正常步骤访问域名配置WordPress,之后要额外安装一个WordPress插件 —— Make Paths Relative ,
这个插件顾名思义,可以将WP网站转换为相对链接的结构。

如有需要,还可在设置页面添加域名信息:(包括「域名:端口」形式)

3.编辑Nginx端口配置
编辑Webinoly服务主机上的域名主机配置 sites-available/domian.ltd.conf ,在需要访问的Server部分添加需要监听的端口,或是复制一份现有80或443的Server配置,将端口号改为自定义的端口:
# WebinolyNginxServerStart
Server {
listen 443 ssl;
listen [::]:443 ssl;
listen [::]:443 quic;
listen 443 quic;
listen [::]:2000 ssl;
listen 2000 ssl;
listen [::]:2000 quic;
listen 2000 quic;
server_name domain.ltd;
……
4.编辑WordPress的wp-config.php硬配置
寻找到自定义编辑行,添加如下代码。原理是硬配置网站链接为根部分(这可能会导致网页分享插件发生空白错乱)
/* Add any custom values between this line and the "stop editing" line. */ define('WP_SITEURL','/'); define('WP_HOME','/')
注意事项
可以通过浏览器的开发者工具查看页面资源(如CSS与JS)指向的服务器目录位置,
这样就可以看到资源究竟是从HTTP/HTTPS的标准端口加载,还是从自定义的端口号加载了。
若是无法打开网页的话,可以尝试用浏览器的隐私模式查看。手机LTE(或有WWAN连接的笔记本)也是个不错的公网测试环境。
直接在浏览器输入域名并不能直接跳转到端口号,这个功能需要DNS管理侧跳转实现,不是所有DNS服务商都提供这一功能,对于私人用途也没有必要。
Webinoly自带黑洞模板,理论上直接从IP+端口号无法访问,只有从域名+端口访问才能显示网页。
至于运营商侧是否因此探测或者禁止……并不可测。因地区而异吧,本文不会探讨法律风险。
不过安全起见仍然建议使用HTTPS协议。
另家宽不建议开启爬虫探测,必要时开启整站HTTPAUTH也并非不可。
最后,测试完毕后,切勿忘记将临时修改的自定义hosts,将其复原回来!开发愉快~
