Contact Form 7 で正しい UserAgent を取得するための CloudFront 設定方法
今回は、CloudFront を利用している WordPress サイトで Contact Form 7 を使用する際のポイントについて紹介します。Flamingo プラグインなど、Contact Form 7 から送信したフォーム情報を収集する際に、User Agent 情報を正しく取得するために、どのような設定を CloudFront に実施すべきか、現象や解決方法について解説します。
目次
CDN を利用すると、User Agent 情報が正しく取得できないケースがある
CloudFront を使って WordPress サイトをキャッシュ配信している場合、パフォーマンス最適化のために多くのリクエストが CloudFront でキャッシュされます。この際、デフォルト設定では CloudFront はオリジンサーバーへのリクエスト時に User-Agent ヘッダーを送信しません。
そのため、 Contact Form 7 などのフォームプラグインで設置されたフォームによる問い合わせデータを Flamingo プラグインや CRM などで蓄積すると、UserAgent が全て「Amazon CloudFront」として記録されてしまい、本来取得したいブラウザやデバイス情報などの User Agent 情報が失われてしまうことがあります。
CloudFront で User-Agent ヘッダーをキャッシュ対象外にする
この問題を解決するには、問い合わせフォーム関連のパスに対して CloudFront のキャッシュ動作を変更する必要があります。具体的には、 User-Agent ヘッダーを保持するように設定しましょう。
AWS マネジメントコンソールにログインして、CloudFront を開きます。ビヘイビアの一覧を確認し、問い合わせフォームページのURL、例えば /inquiry-* のようなパスパターンのビヘイビアが存在するかチェックしましょう。もし存在する場合は、そのビヘイビアを編集します。まだビヘイビアがない場合は、新しく作成しましょう。

ビヘイビアを作成・更新する際、オリジンリクエストポリシーを AllViewerExceptHostHeader に変更します。これで全てのヘッダーやクッキー・クエリ文字列などの情報をオリジンに送信してくれます。より詳細なカスタマイズについては、クラスメソッド社が紹介しているこの記事も合わせてご覧ください。

Contact Form 7 REST API 用のビヘイビアも追加しよう
フォームプラグインによっては、 WP API を利用したフォーム送信処理が実装されていることもあります。例えば Contact Form 7 では、 /wp-json/contact-form-7/* がフォーム送信などに利用されています。このパスパターンについても、ビヘイビアの設定を行いましょう。
なお、既存の /wp-json/* の動作設定がある場合、今回追加した /wp-json/contact-form-7/* の優先順位が高くなるよう順序を調整してください。優先順位は数字が小さいほど高くなりますので注意が必要でしょう。
動作確認方法
設定変更後、正しく動作しているか確認しましょう。まず、CloudFront ディストリビューションのデプロイが完了したことを確認します(ステータスが「デプロイ済み」になります)。次に、実際に問い合わせフォームからテスト送信を行ってみてください。
最後に、Flamingo の管理画面で送信されたデータを確認します。User-Agent 情報が「Amazon CloudFront」ではなく、実際のブラウザ情報(例えば「Mozilla/5.0…」など)になっていれば成功です。
まとめ
CloudFront で WordPress サイトを配信する際、Contact Form 7などの動的なフォーム処理については適切なキャッシュ設定を行うことが大切です。今回ご紹介した設定により、パフォーマンスを確保しながらも、必要なユーザー情報を正確に取得できるようになります。
この設定方法は他のフォームプラグインや動的コンテンツを扱う場合にも応用できますので、サイトの構成に合わせて柔軟に対応してみてください。
WordPress を AWS で運用する最適解を提案します!
今回解説したような設定は、専門知識がないと難しく感じることもあるでしょう。DigitalCube の提供する LabWorksでは、AWS を活用して WordPress サイトの安定運用をサポートする様々なサービスを提供しています。
24時間365日有人監視によりサイト障害をいち早く検知し対応するサービスや、WordPress エンタープライズサポートとして月額制のプロフェッショナルによるテクニカルサポートを行っています。また、WordPress アップデート代行(年間/スポット)で最新の状態を維持するためのアップデート作業もお任せいただけます。さらに、WordPress 運用の課題を解決するチケット制サービス「プロフェッショナルサポート」も提供しています。
CloudFront や AWS での WordPress 運用でお困りのことがあれば、お問い合わせフォームからご相談ください。WordPress 専門のエンジニアが最適な解決策をご提案いたします。
当社へご興味をお持ちいただきありがとうございます。
「こんなことやってみたい!」と、ぜひ気軽にご相談ください。
担当者よりご連絡差し上げます。