内网穿透下的 wordpress 地址冲突问题与 https 下的后台登陆问题

devtools/2024/10/11 13:22:11/
http://www.w3.org/2000/svg" style="display: none;">

内网穿透下的 wordpress 地址冲突问题与 https>https 下的后台登陆问题

  • 内网穿透下的地址冲突
  • https>https 登录管理后台
  • 总结

同步发布在个人笔记内网穿透下的 wordpress 地址冲突问题与 https>https 下的后台登陆问题

笔记记录解决两个 wordpress 相关问题

  • 如果我们使用内网穿透把本地的 wordpress 服务穿透到公网上,同时希望仍能用内网 ip 访问后台的话,会遇到 wordpress 主站地址冲突的问题,即 wordpress 不知道要把内网 ip 当作地址还是把公网访问用的域名当作地址;
  • 如果我们使用 https>https 协议访问 wordpress 会遇到无法登录进管理后台的问题。

内网穿透下的地址冲突

wordpress 会有两个重要参数 wordpress 地址站点地址,大部分情况下个人网站两个值是一样的,此处不分别处理。
https>https://img-blog.csdnimg.cn/img_convert/f2e1c50da0c4b31334b8e255aef6dfc7.png" alt="" />
这个值是可以手动修改的,所以如果我们只希望通过一种方式(ip / 域名)访问,那么我们修改一下就好。如果我们希望既可以在外网用域名访问,同时希望还可以在内网用 ip 访问的话,就要求 wordpress 可以通过访问方式,自动的调整两个参数。
一般情况下,大部分解决方案是在wp-config.php文件里添加下面两行:

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);

很好理解,就是在配置文件里把访问地址直接写进两个参数内(直接写值会导致后台页面参数变灰,不可更改)。简单情况下,这样问题就解决了,但是此种方法下 wordpress 会把 https>https 协议的域名也当作 http 处理。这会导致一些图片无法加载。
此种情况下,我们还要分辨是使用了 http 还是 https>https 协议。
识别协议可以使用 php 函数$_SERVER['HTTPS']

$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https>https')) ? 'https>https://' : 'http://';

用这个方法分辨后再去 define url 似乎也可以,可是我的情况更恼人一些,由于我是用 frp 工具内网穿透了服务,我的本地 wordpress 服务是没配置 https>https 访问的,但是我的内网穿透服务器配置了 https>https 访问。这导致虽然用户是通过https>https://domain.com访问的博客,但是本地的 wordpress 感受不到,它仍然认为是通过http://domain.com访问的。这是因为协议头是逐跳标头,只能逐级传递不能跳传,所以 https>https 的信息传到内网穿透服务器就不再向下传了。

http://www.w3.org/2000/svg" height="132" viewbox="0 0 485.703125 132" class="mermaid-svg">
公网服务器domain.com
内网服务器
nginx
wordpress
用户

这种情况下,$_SERVER['HTTPS']是无法分辨的。所以只能另辟蹊径,用访问字头是数字还是非数字来判断是通过 ip 还是域名访问的,如果是 ip 访问,那就加上 http ;如果是域名那就加上 https>https。

if(is_numeric(substr($_SERVER['HTTP_HOST'],0,1)))	# is_numeric 判断是数字还是非数字
{$http_type = 'http://';
}
else
{$http_type = 'https>https://';
}define('WP_SITEURL', $http_type . $_SERVER['HTTP_HOST']);
define('WP_HOME', $http_type . $_SERVER['HTTP_HOST']);

https>https__52">https>https 登录管理后台

当使用 https>https 访问 wordpress 时,虽然访问页面是没问题的,但是发现管理后台怎么也登陆不进去,这是因为wp-config.php还有一个地方需要修改,添加下面的语句。

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

这样就可以 https>https 登录后台了。

总结

两个问题如果是分别出现,那么分别处理就好,但是我的情况是既要 https>https 登陆后台,也要保留内网 ip 操作的能力。所以不能武断把两段代码一起插进去,而要结合一起,ip 访问时,不开启 https>https 登录;域名访问是开启 https>https 登录。

if(is_numeric(substr($_SERVER['HTTP_HOST'],0,1)))
{$http_type = 'http://';
}
else
{$http_type = 'https>https://';$_SERVER['HTTPS'] = 'on';define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true);
}define('WP_SITEURL', $http_type . $_SERVER['HTTP_HOST']);
define('WP_HOME', $http_type . $_SERVER['HTTP_HOST']);

http://www.ppmy.cn/devtools/14407.html

相关文章

【早晨读书会】深入理解rust并发编程

第一章 线程 线程 线程是调度的最小单位 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器上下文&am…

【学习记录】autoware标定相机与激光雷达外参

一、autoware选择 这里踩了好几个坑,首先autoware作为一个无人驾驶知名框架,其内部实际上是有两套标定的东西的,这一点绝大多数博客没有提到。其中最常用的是一个叫标定工具箱的东西,这个ros包已经在1.10往后的版本中被删掉了&am…

云原生Kubernetes: K8S 1.29版本 部署GitLab

目录 一、实验 1.环境 2.搭建NFS 3.K8S 1.29版本 部署Redis 4.K8S 1.29版本 部署Postgresql 5.K8S 1.29版本 部署GitLab 6.K8S 部署istio微服务 7.K8S 部署ingress应用路由 二、问题 1.K8S部署gitlab报错 2.gitlab创建失败 3.生成网关资源报错 4.安装istio 报错 …

设计模式之外观模式

1、详细介绍 外观模式(Facade Pattern)是一种结构型设计模式,它为子系统的一组接口提供了一个统一的入口点(外观类)。外观模式简化了客户端与子系统之间的交互,屏蔽了子系统内部的复杂性,使客户…

多目标粒子群算法及其MATLAB实现

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法是一种基于种群的优化算法,它结合了粒子群优化(Particle Swarm Optimization, PSO)和多目标优化的思想。多目标粒子群(MOPSO&am…

BUUCTF---misc---[HBNIS2018]来题中等的吧

1、下载附件解压之后得到一张图片 2、常规操作可能会进行查看属性,用记事本打开查看flag,用winhex分析,binwalk,foremost,但是这道题没有复杂 3、仔细看这张图片,不就是我们熟悉的摩斯密码吗。手动敲出来 …

基于Promise + XHR 封装myAxios函数

在JavaScript中,你可以使用Promise和XMLHttpRequest(XHR)来封装一个名为myAxios的函数,用于执行HTTP请求。下面是一个简单的示例,它封装了GET和POST请求的基本功能: function myAxios(url, method GET, da…

「ChatGPT」掀起新一轮AI热潮!超越GPT-4 Turbo,商汤日日新大升级!

目录 拳打 GPT-4 Turbo ,脚踢 DALLE 3 端侧大模型,唯快不破 AI 应用落地需要一个即插即用的大模型超市 并不存在 AI 这个行业,只有 AI行业,强调 AI 需要与传统产业合作,这种关系是结合与赋能,而不是颠覆…