Apache での日本語ドメインバーチャルホストの設定

| 1 TrackBack

てれび応援団 は覚えやすい日本語ドメインに対応しています。
試しに以下の URL にアクセスしてみてください。

不思議なことに http://www.tv-oendan.jp/ に接続されたと思います。

今回は、この動作に必要な DNS レコードと Apache の設定について簡単に解説します。

日本語ドメイン名の仕組み

日本語ドメイン名は、DNS やウェブサーバなど、既存の枠組みを変更することなく、クライアント上のアプリケーションの対応だけで実現できるように考慮されています。

  1. クライアントは日本語ドメイン名を、Punycode という形式に変換した上で、サーバへリクエストします。
  2. サーバは Punycode のままで処理を行いクライアントへレスポンスを返します
  3. クライアントは必要に応じて、Punycode を日本語ドメイン名に変換した上で表示を行います

例えば、「てれび応援団.jp」を Punycode に変換すると「xn--m9j0a0ev67qenjx3f.jp」となります。
このなんだかわからない文字列が、DNS サーバや Web サーバへのリクエストとして扱われるのです。

日本語 <-> Punycode の変換は、以下のページで確認することができます。

日本語ドメインの取得

まずは日本語ドメインを取得してください。

JPドメインの管理を行っている 日本レジストリサービス(JPRS)の以下のページが参考になると思います。

DNS の設定

日本語ドメインを取得したら DNS の設定を変更して、ご利用のウェブサーバのホストに紐づけてください。

ドメインを取得したサービス業者によって設定方法は異なりますが、我々が利用しているサービスではこんな感じの指定となります。

てれび応援団.jp    CNAME    www.tv-oendan.jp 

このサービスでは日本語ドメイン名に対して A レコードを指定できなかったので、CNAME レコードを使っています。A レコードが指定できる場合には A レコードの指定をお勧めします。

また、サービス業者によっては Punycode 形式で指定する必要があるかもしれません。

DNS の設定の確認

無事に設定できたかどうかを確認してみましょう。
Punycode 形式で指定すれば、dig コマンドなどで DNS の登録状況を確認することができます。

$ dig xn--m9j0a0ev67qenjx3f.jp

; <<>> DiG 9.5.0-P2 <<>> xn--m9j0a0ev67qenjx3f.jp
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5516
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;xn--m9j0a0ev67qenjx3f.jp.      IN      A

;; ANSWER SECTION:
xn--m9j0a0ev67qenjx3f.jp. 3600  IN      CNAME   www.tv-oendan.jp.
www.tv-oendan.jp.       3600    IN      A       125.103.231.249

;; AUTHORITY SECTION:
tv-oendan.jp.           3600    IN      NS      01.dnsv.jp.
tv-oendan.jp.           3600    IN      NS      02.dnsv.jp.

;; ADDITIONAL SECTION:
02.dnsv.jp.             59799   IN      A       210.172.129.69
01.dnsv.jp.             65476   IN      A       210.172.129.68

;; Query time: 26 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Mar  6 18:01:31 2009
;; MSG SIZE  rcvd: 157

ANSWER SECTION に注目してください。

; ANSWER SECTION:
xn--m9j0a0ev67qenjx3f.jp. 3600  IN      CNAME   www.tv-oendan.jp.
www.tv-oendan.jp.       3600    IN      A       125.103.231.249

1行目で、xn--m9j0a0ev67qenjx3f.jp が www.tv-oendan.jp の別名であること。二行目で www.tv-oendan.jp の IP アドレスが 125.103.231.249 であることがわかります。無事にアドレス解決ができているようです。

Apache の設定

バーチャルホストの設定をします。
私たちのポリシーでは、「てれび応援団.jp」でアクセスしてきた場合、「www.tv-oendan.jp」へリダイレクトするものとしています。

<VirtualHost *:80>
        ServerName xn--m9j0a0ev67qenjx3f.jp

        RewriteEngine on
        RewriteRule ^(.*) http://www.tv-oendan.jp$1 [R=301]
</VirtualHost>

mod_rewrite を使い、「301: Moved Permanently」で www.tv-oendan.jp へと移動するように指定しています。ドメイン名をPunycode で指定する以外は特別なことは必要ありません。

日本語ドメインが有用かどうかは、私たちにはまだデータがなくて判断できませんが、そんなに高額なものではないので、ここはひとつ「景気回復の一助」だと思って投資してみるのも面白いのではないでしょうか。

補足

本文中では、わかりやすさを優先して「日本語ドメイン」と表記していますが、規格的には Internationalized Domain Name (IDN) として考慮されているものであり、日本語以外のドメイン名も同様に利用することができます。

具体例としては、以下のサイトが参考になると思います。

このページによると IDN 完全対応ブラウザであれば、以下のようなリンクを正しく処理できるそうです。

私たちのようなサービスを作る側としても、URL に使える文字について、いろいろと認識を改めないといけないですね。

参考資料

1 TrackBack

TrackBack URL: http://blog.tv-oendan.jp/cgi-bin/movabletype/mt-tb.cgi/6

「ナンだろサーチ」では、あなたが入力したキーワード「お勧めのDNSサービス」に関する最新情報をインターネットから徹底検索しています。 「お勧めのDNSサ... Read More