自動我發佈開源程序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;
}
不過這方法只是權宜之計,只要開放一個功能必然會打來隱患,有得必有失,看你的選擇了。