1. 全体像(アーキテクチャ)
この構成では、メインのドメイン(example.com)はCloudflareにありますが、特定のパス(/blog)へのアクセスだけをWorkerが検知し、裏側にあるXSERVER(wp.example.com)からコンテンツを引っ張ってきて表示させています。
- メインLP(/): Cloudflare(PagesやWorkersなど)
- ブログ(/blog): XSERVER上のWordPress
2. 各ステップの詳細解説
① XSERVER側の準備(箱作り)
まず、WordPressを動かすための「専用の入り口」をXSERVER側に作ります。
- サブドメインの設定:
wp.example.comのようなサブドメインをXSERVER上で作成します。 - WordPressのインストール: そのサブドメインに対してWordPressをインストールします。
- ディレクトリ構造:
/blogというディレクトリを作成し、そこにWordPressを配置します(またはXSERVERの転送設定などで/blogで反応するようにします)。
② WordPress内のURL設定
WordPress自身に「君のURLは /blog なんだよ」と教え込む必要があります。
- 設定変更: WordPress管理画面の「設定 > 一般」
- WordPress アドレス (URL):
https://example.com/blog - サイトアドレス (URL):
https://example.com/blog
- WordPress アドレス (URL):
- ポイント: ここを
wp.example.comにせず、最終的な表向きのURL(example.com/blog)にするのがコツです。
③ Cloudflare DNSの設定
CloudflareからXSERVERを見に行けるように道を作ります。
- レコード追加:
wpという名前で、XSERVERのIPアドレスを指すAレコードを作成します。 - プロキシ状態: オレンジ(Proxied) に設定。
- これにより、Cloudflareのネットワークを通ってXSERVERに通信が行くようになります。
④ Cloudflare Workersの設定
ここが一番肝心な「リバースプロキシ」のコード部分です。
Workerの役割:
「もしアクセスが example.com/blog/* だったら、ブラウザのURLはそのままで、中身だけ wp.example.com/blog/* から取ってきて表示せよ」という命令を出しています。
コードのイメージ:
addEventListener('fetch', event => {
const url = new URL(event.request.url);
// パスが /blog で始まる場合
if (url.pathname.startsWith('/blog')) {
// リクエスト先を XSERVER側のサブドメインに書き換える
const targetUrl = 'https://wp.example.com' + url.pathname + url.search;
const newRequest = new Request(targetUrl, event.request);
event.respondWith(fetch(newRequest));
} else {
// それ以外は通常のLP(Cloudflare Pagesなど)を表示
event.respondWith(fetch(event.request));
}
});
⑤ 仕上げ:Routeの設定
Workerを作っただけでは動きません。
Cloudflareの管理画面「Workers & Pages > Roles」にて、example.com/blog* というリクエストが来た時に、作成したWorkerが起動するように紐付け(ルート設定)を行います。
3. この構成のメリット
- SEOに強い:
/blogというサブディレクトリ形式になるため、ブログのドメインパワーがメインドメインに蓄積されます。 - 高速・安全: CloudflareのCDNキャッシュやWAFの保護を受けながら、慣れ親しんだWordPressをバックエンドで使えます。
- サーバーの切り分け: LPはエンジニアリングしやすいCloudflareで、ブログは記事更新しやすいWordPressで、と「いいとこ取り」ができます。


コメント