序
前两天刚说到 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
文件并输入:
1 2 3 4 |
RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] |
便可以实现 HTTP 到 HTTPS 访问的重定向。但是在 repo 目录下创建.htaccess
文件 push 上去后,发现没有效果,仍然无法通过 HTTP 访问。暂且搁置,下文解决。
Permalinks 设置导致404
在将 Permalinks 设置为非 default 形式后,访问所有非“主页”页面都返回404。但是在 host 和 view 之间添加index.php
便可以访问,如:http://hostname/index.php/postname
。这样做未免太衰,URL 都写成一坨屎了。经过查找,发现还是.htaccess
文件的配置问题,应该在其中添加如下语句:
1 2 3 4 5 6 7 8 9 |
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress |
综合上一步想要解决的问题,就创建了如下内容的.htaccess
文件:
1 2 3 4 5 6 7 8 9 10 11 |
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress |
思考后,感觉由于是通过 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/