マルチサイト化した複数のwordpressサイトを、アクセス元の国によって切り替えて表示する方法を知りたい

投稿者: Anonymous

マルチサイト化したwordpressサイトを表示させる方法を知りたいです。

例えば、同じサーバーの中にマルチサイトを利用して、2つのwordpressサイトを作ります。

  • A:sample.com
  • B:sample.com/en

最初のアクセスに利用するドメインは、Aのsample.comのみで、

  • 日本からのアクセスの場合→A:sample.com
  • 海外からのアクセスの場合(またはブラウザの検索条件を日本語以外にしている場合)→B:sample.com/en

というように、1つのURLのみの使用で、アクセス元やブラウザーの条件によって、A、Bへアクセスが変わるようにしたいのですが、

  • このような方法は可能でしょうか?
  • また、可能な場合どのような方法で対応できるでしょうか?

ご存じの方おりましたら、ご教授いただけないでしょうか?

◆環境
CentOS (7 x86_64)
Apache (2.4.6 CentOS)
PHP (7.1.33)
wordpress(5.2.5)

解決

いくつかの方法が考えられますが、例えば GeoIP などのIPアドレスを元に判別する場合でも、アクセス元の国利用者が理解できる言語 とが必ずしも一致しないケースを考慮する必要があります。
(旅行や出張で海外にいる、VPNを利用している etc..)

現実的には環境変数 HTTP_ACCEPT_LANGUAGE からブラウザの優先言語を取得して、webページ側で振り分けるのがよさそうです。

例えば PHP であれば、以下のようなコードでブラウザの優先言語を取得できるようです。

参考:
PHP: Locale::acceptFromHttp – Manual

サンプルコード

<?php
$locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale;
?>

結果:

en_US, ja_JP など
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *