Closed6
WordPress をヘッドレス化するメモ
ピン留めされたアイテム
環境
- Amazon Lightsail を使って立ち上げた EC2
- WordPress 用の AMI を利用
前提
- S3 上にホストしている他のサイトから WordPress REST API を叩かせる。
- Lightsail に SSH しての作業は管理コストが嵩むので、なるべく楽な方法を模索する。
要件
- WordPress の通常画面はユーザに見えないようにする。
- 管理画面は社内ユーザが記事を投稿するためログインでき、かつ画面上で操作ができるようにする。
Basic 認証をかけるパターン
WordPress フロントに Bisic 認証を使ってアクセス制限をかける手法は以前試した。
ただ、その時詰まったこととしては、API コールで Header に認証情報を付与する必要があり Preflight リクエストが発生し、 CORS エラーとなった。
単純に WordPress が動いている Apache に Access-Control-Allow-Origin: *
を設定してあげれば行けそうだけど、前回試した時は時間の都合上ここで断念した。
Pros.
- ソースコードを触ることなく Apache の conf をいじるだけで簡単に実現できる。
- セキュア
Cons.
- フロント側で認証情報を送るようにする追加実装が発生する。
テーマを空にするパターン
上記の掲載した URL などで一番多い手法。
テーマの HTML ファイルを空にする。残しているのは下記のファイルのみとするパターン。
index.php
style.css
functions.php
Pros.
- やっている人が多い分ネット上にメソッドが散らばっている。
Cons.
- ソースコードのバックアップ(バージョン管理までしてなくも良い?)しておく必要がある。
- アクセスできないようにするための何かしらの対応が必要
- 空 HTML とはいえアクセスはできる可能性がある
- SEO 上の問題(インデックスされてしまう可能性がある)
プラグインを利用するパターン
豊富なプラグインが用意されているので、それくらいあるのではないかと予想。
案の定調べたら結構出てきた。
“headless” の検索結果 | WordPress.org 日本語
結論
htaccess.conf を下記に対応できるように書き換えることで実現した。
-
/
- WordPress への直接アクセスは拒否
- 以前はオフィスの IP アドレスからのアクセスは許可していましたが、今回完全にヘッドレス化しても問題なかったため外しました。
-
/(wp-json|wp-content|wp-includes|wp-admin)/*
- これらは API からのデータ取得(画像含む)、管理画面で必要なためアクセス許可
-
index.php|wp-login.php
- エントリーポイントとログインで使うためアクセス許可
このスクラップは2021/03/26にクローズされました