自动我发布开源程序WordPress版微信小程序以来,不少WordPress站长在搭建微信小程序的过程当中会碰到各类问题来咨询我,有些问题其实很简单,只要仔细看看我写的文章,就能够本身解决。不过这些文章里没法涵盖全部的技术点,由于涉及Wordpress和微信小程序两套程序系统,有些技术点对于小白用户来讲确实有些难度,所以我考虑写一个系列文章介绍WordPress版微信小程序开发的相关技术要点。php
今天介绍第一个技术要点:WordPress REST API。WordPress REST API没法访问是被问到的最多的问题。这个技术点在《利用WordPress REST API 开发微信小程序从入门到放弃》就初步介绍过,更为详细使用方法将在后续文章介绍,这里重点关注,如何才可让WordPress REST API正常访问。html
最多见的问题就是访问WordPress REST API 的连接的时候显示404错误没法找到该页。 REST API是WordPress4.4版本开始提供的功能,不过是以插件的方式提供的,WordPress 4.7版本后才内置到系统里,若是你的WordPress站是4.7之前的版本,须要下载api插件:https://wordpress.org/plugins...。nginx
若是是WordPress 4.7 或更高版本,要想正常访问 api,须要调整知足两个条件:web
1.设置WordPress 的固定连接(permalink).json
二、URL重写(url rewrite),也就是设置WordPress的伪静态。小程序
1、设置WordPress 的固定连接(permalink)微信小程序
打开Wordpress后台设置,以下图所示:api
选择除了“朴素”之外的其余选项均可以。不过注意一点:最好在固定连接的最后加上html的为后缀,虽然不加并不影响json api的使用,但考虑到小程序里的站内连接目前是经过判断html的后缀来获取文章slug值,若是不加html后缀会致使小程序的站内连接没法跳转,后续我会考虑完善兼容不带html后缀的固定连接的方式。安全
1、URL重写服务器
设置完固定连接后,就能够能够经过如下的连接方式来访问REST API 了,好比查看文章列表的json:
https://www.watch-life.net/in...
可是这种方式看上去并非那么优雅,中间还夹杂这index.php,若是去掉就是就感受完美一些,这就须要经过URL 重写来实现,具体重写的原理就不详细阐述了,下面给出在不一样的web服务器下URL重写代码。
1.IIS 7服务器
须要安装URL Rewrite Module。在web.config 文件 加入 URL重写代码:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
2.Apache服务器
在WordPress网站根目录下增长.htaccess文件,加入 URL重写代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
3.nginx服务器
增长一个conf文件好比wordpress.conf,加入 URL重写代码:
location / {
try_files $uri $uri/ /index.php?$args;
}
通过URL重写后,REST API访问的连接的地址就变成这样了:
https://www.watch-life.net/wp...。是否是要优雅不少。
特别注意:
1.若是WordPress网站安装了水煮鱼的WPJAM Basic插件,在该插件的设置项里有个选项:
若是你的博客没有客户端,建议屏蔽 REST API 功能。
不要勾选这个选项,若是勾选了,json将没法访问。
若是你经过其余的方式屏蔽了json的访问,也要取消。
2.若是你担忧开放Wordpress的json访问可能对网站的安全带来影响。能够参考Jeff的一个解决方法,考虑到微信小程序是经过手机访问的,那么就只容许手机来访问这个api,作必定范围的防范,若是你是nginx服务器,能够在config文件里加以下代码:
location /wp-json {
if ($http_user_agent !~ '(iPhone|Android)'){
return 403;
}
try_files $uri $uri/ /index.php?$args;
}
不过这方法只是权宜之计,只要开放一个功能必然会打来隐患,有得必有失,看你的选择了。