position: absolute;

選択されているタグ : wordpress

タグを絞り込む : apache php

WordPressをリバースプロクシ対応にする3つのポイント

結構久しぶりにWordPressのセットアップをやったんですが、リバースプロキシ下での設置が以前みたいに環境変数を上書きでええやん的なことになっていなかったのでちょっとメモしておきます。

あ、最近リバースプロキシをnginxで構築する例が多いですが、今回はapacheの話ですのでご注意ください。

あと、リバースプロキシって?という人には基本必要のない話ですので華麗にスルーのほどお願いします。

環境変数の上書き

やはりこれは必要です。ちゅうわけでバージョンアップなどの影響を受けにくいwp-config.phpに記述します。

$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];

Canonical URL機能の無効化

WordPress2.3あたりから、「www.hoge.jp」と「hoge.jp」のようなアクセスするドメインのブレを無くすためにwp-includes/canonical.phpというのが加わっているのですが、rewriteを利用したリバースプロクシではリダイレクトループが発生してしまいます。

なんとかしたいところなんですが、Canonical URLを実現する方法については他にやり方があるのでガッツリ切ってしまうことにしました。

というわけでDisable Canonical URL Redirectsのプラグインを導入しました(中身は一行だけですが)。

パーマリンク設定

まあ、URLは「カテゴリ/コンテンツ」という形でやりたいので設定するのですが、ここで管理画面で表示されるrewriteの設定を持ってきても動いてくれません。

で、どうするか?となりますが、これはindex.phpにPATH INFOで渡してあげれば解決するので下記のようにrewriteの設定を記述します。(apacheのconfに書いていますので、.htaccesに記述する場合はそのままでいけるかは検証してください。「/」からの記述じゃないのでそのまま行ける気がしますが。つか、この情報が必要な人ってapacheのconfでやるでしょ?)

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ http://app.server/index.php$1?{QUERY_STRING} [NC,P,L]

直接的に関係のありそうなところだけ書いてますので、他にも状況に応じて調整してください。ではではー。

※ちょっと実験でエントリーのタイトルを変えています。変える前に読んでいた人ごめんなさい!