分类: 技术

WordPress 中“设置 Permalinks 导致404问题”解决

前两天刚说到 Blog 第四次搬家,今天又要再搬一次~~原因是上次是在 SAE 上部署的 WordPress,鉴于最近风声太紧,又是扫 H 又是打 H,我的域名又没有备案,所以取消原绑定后果断悲剧。新的绑定无论如何无法验证通过,他大爷的 GWF。

又试了 BAE 和 JAE,压根不支持海外域名绑定~~盛大的云引擎干脆整得像个烂尾,GAE 又被墙。一筹莫展之际,想起来朋友之前推荐的 OpenShift,就抱着试试的心态玩一把,没想到柳暗花明。当然也遇到了一些问题,现在梳理一下做个简单的记录,并在日后补详。

OpenShift 简介

OpenShift 是 RedHat 推出的一个云服务。根据自己的理解,它提供了一个虚拟的云主机,而且还提供了云引擎的许多功能,方便了 Web App 的部署。比如,可以使用它很快速的创建一个 WordPress 应用,包括了代码部署和数据库创建等。具体的介绍还是去查看官网,不再赘述。

一个帐号可以免费创建3个应用(官方称为gear,还没来得及仔细研究它的定义)。付费帐号分为两种,也不贵,都是按需收费。如果将来有需要,也会考虑使用。

问题解决

重定向

使用 OpenShift 创建的 Web App 可以通过 HTTP 或者 HTTPS 两种方式访问。其中 HTTP 在天朝已被墙,但通过 HTTPS 却可以访问。所以考虑将所有通过 HTTP 的访问重定向到 HTTPS 访问。

通过官方文档的查找,得知 OpenShift 部署的PHP应用使用 Apache 作为 Web 服务器。只需要在应用的根目录下创建.htaccess文件并输入:

便可以实现 HTTP 到 HTTPS 访问的重定向。但是在 repo 目录下创建.htaccess文件 push 上去后,发现没有效果,仍然无法通过 HTTP 访问。暂且搁置,下文解决。

Permalinks 设置导致404

在将 Permalinks 设置为非 default 形式后,访问所有非“主页”页面都返回404。但是在 host 和 view 之间添加index.php便可以访问,如:http://hostname/index.php/postname。这样做未免太衰,URL 都写成一坨屎了。经过查找,发现还是.htaccess文件的配置问题,应该在其中添加如下语句:

综合上一步想要解决的问题,就创建了如下内容的.htaccess文件:

思考后,感觉由于是通过 guide 创建的 APP,应该是没有搞清楚本地 repo 和线上代码的对应关系。索性 ssh 到云主机。几步打探找到 APP 的根目录app-root/repo/php/,创建.htaccess文件并填入上述内容。再次访问,两个问题解决。

历史遗留问题

看到有人针对第二个问题,使用重定向 URL 解决,但感觉不够优雅,就没有采用。经查阅,.htaccess文件是 Apache 针对目录级别设置的配置文件,即一种“分布式配置文件”,里面可以设置目录的访问权限等。本想今晚做个该文件配置的总结,正巧赶上上司约谈~现在已是 00:31 分,只能搁置,明后天再补了。再有就是有空继续折腾下 OpenShift,争取也做个梳理。最后就是发现 jQuery 的加载速度很慢,打算找到源码,把js的src给换了,能提点速提点速吧~

时间不早了,那就看场球吧~~

注:转载注明出处并联系作者,本文链接:https://nodefe.com/wordpress-permalinks-404/

发表评论

评论