マルチバイトサブドメインを使うときの設定

Apache

マルチバイトサブドメインとは、http://テスト.example.com/のように、マルチバイトを含んだサブドメインのホストへアクセスすることを言う。

普通は、Punycode (RFC 3492)を利用して、エンコードする。テスト.example.comの場合はxn--zckzah.example.comとなる。

しかし、ブラウザ(携帯端末)がRFC 3492対応していなかったり、マルチバイトサブドメインを含んだURLを貼り付けた掲示板がPunycodeを想定していない場合(Youtube)があるため、サービス提供者側でいくつかのエンコード形式でアクセスされたときのことを想定しておかなければならない。具体的には以下の3つ。

  • Punycode
  • UTF-8のurlencode
  • UTF-8

Apacheの設定は以下のようになる。
” http://テスト.example.com” の場合

<virtualhost *:80>
 ServerName xn--zckzah.example.com
 DocumentRoot /var/www/path/to/htdocs
</virtualhost>

<virtualhost *:80>
 ServerName %83e%83X%83g.example.com
 Redirect permanent / http://xn--zckzah.example.com/
</virtualhost>

<virtualhost *:80>
 ServerName テスト.example.com
 Redirect permanent / http://xn--zckzah.example.com/
</virtualhost>

コメント