最近感觉网站服务器的debian越用越乱了,于是趁着五一假期,将网站迁移回了windows系统。以下是遇到的一些问题,以及歪门邪道的解决方法。

1. Typecho 数据库操作失效

本来想在碎碎念发一句话的,结果发现点了提交后只是“刷新”了一下页面,啥也没有出来。后台编辑文章也没有效果,可是没有任何提示。
开启了typecho的debug、ini_set&display_errors 均不会出现任何提示,于是决定将POST的接口重定向先注释掉查看报错,结果还是啥也没得到。
无奈只好继续深究,搜到了保存文章的方法,注释掉里面四个redirect后,仍然会跳转,那就不细说了(忘了)。那就只能继续找了,摸到 \var\Typecho\Widget\Response.php 将redirect方法设置响应头的操作暂时注释,发现保存后白屏,返回页面出现成功提示,没有任何报错,成功保存。
????
可是撤销修改后仍然无法保存文章,遂采取了一个“猎奇”的解决办法,将header的Location改成js的location.href,发现成功保存。
没关系,就当解决了吧。下一个!
ee5dd595a50650de56b84544a14c2cb0
(但是这么做目前发现了一个问题 登陆后台的时候 /admin会显示禁止访问 不管 加个/login.php的事)
image

2. iOS Safari 无法打开 Apache 搭建的网站

是这样,打不开,显示丢失网络连接。看了一下cdn配置,跟其他的都一样,那就不应该了。
我甚至以为是自己网络问题,结果等了好久还是不行,于是开始搜是不是服务器问题,想不到还真是——

以下复制参考文章:

在近期有一位客户遇到了网站在苹果设备,无论是iPhone、ipad还是mac上面使用Safari浏览器打开网站都显示“Safari打不开该网页,因为已经丢失网络连接”。

但在windows和Android设备上打开网站则是正常可以打开的,针对此问题,我们进行了排查,是发现客户的站点使用了一台服务器nginx反向代理内网服务器对外访问,而网站本身的服务器则是apache的。

原因是如果原始请求已在http/2中,iOS
10+不支持在响应中包含Upgrade标头。解决方案是隐藏Apache服务器提供的Upgrade标头,因为Nginx已升级为Apache请求(Nginx发送http/1.1请求,Apache已在http/2中升级)。

当请求已经在 http2 中时,iOS 无法处理“协议升级请求”。两台服务器配置在 apacheProtocols h2 http/1.1和
nginx 中都启用了 http2。

因此解决的方式是,在apahce源服务器中找到 apahce配置文件 搜索 Protocols h2 http/1.1
并且去除,去除之后重启apahce即可正常访问了。

此问题较为小众,在文此记录解决方法。

打开 httpd.conf 搜索 Protocols h2,将该行注释,重启服务,问题解决。
image

参考:https://www.themepark.com.cn/wzzioshmacossysafariswffw.html