まちゅダイアリー

トップ «前の日記(2006-10-19 (木)) 最新 次の日記(2006-10-22 (日))»  

2006-10-21 (土)

TextDrive でサブドメイン

先日借りた TextDrive をあれこれ触っている。 まず、サブドメインの使い方を覚えよう。

やりたいこと

www.example.com と diary.example.com で違うサイトを表示したい。

現状

デフォルトでは、全てのサブドメイン (*.example.com) で同じコンテンツが表示される。 Apache の設定ファイルは、以下のようになってる。

ServerName example.com
ServerAlias www.example.com *.example.com

基本

まず、 TextDrive Help Desk - 6.4. Creating Virtual Subdomains を読む。

Virtual subdomains are easy to create. Any folder in your /web/public or /public_html directory (i.e., /users/home/username/web/public/folder/ or /users/home/username/public_html/folder/) is automatically available at http://folder.yourdomain.tld/

なるほど。 diary.example.com だけを分けたい場合は、以下のようにすればいいのか。

web/public/ ← www.example.com のコンテンツを置く
web/public/diary/ ← diary.example.com のコンテンツを置く

ただし、サブドメインのドキュメントルートがメインドメインのドキュメントルートの下にあるので、

http://www.example.com/diary/

にアクセスすると

http://diary.example.com/

と同じ内容のコンテンツが表示されてしまう。

TextDrive Help Desk - 6.5. Making a Subdomain independentを読むと、サブドメインをフルドメインと同じように扱いたい場合は、別ドメインとして管理してねって書いてある。 この場合、ドキュメントは以下のようになる。

web/public/ ← www.example.com のコンテンツを置く
domeins/diary.example.com/web/public/ ← diary.example.com のコンテンツを置く

ちなみに、管理できるドメイン数には制限があって、Shared1プランの場合は5個までとなっている。 (サブドメインとして扱う場合は上限は無さそう)

Twitter:

TextDrive でサブドメイン (2)

ドメイン数を消費するのは嫌なので、簡易サブドメイン機能を使うことにする。 サンプル的に、以下のようにファイルを置く。

web/public/index.html
web/public/diary/diary.html

これで http://diary.example.com/ にアクセスすると……なぜか index.html が見えてしまうよ! サブドメイン機能が有効になっていない…としばらく悩んだあげく、 http://diary.example.com/diary.html にアクセスすると diary.html の中身が見えることに気づく。

もしかして、サブドメイン側にファイルが無かった場合は、メインドメイン側のファイルを見ている? 実験してみることにした。

ファイルの配置

以下の4つのファイルを配置する。 test2.html はメインドメイン側とサブドメイン側で中身を変えている。

web/public/test1.html
web/public/test2.html
web/public/diary/test2.html
web/public/diary/test3.html

実験結果

アクセス先と表示結果はこのようになった。

Noアクセス先表示結果
1http://www.example.com/test1.htmlweb/public/test1.html
2http://www.example.com/test2.htmlweb/public/test2.html
3http://www.example.com/test3.html300 Multiple Choices
4http://diary.example.com/test1.htmlweb/public/test1.html
5http://diary.example.com/test2.htmlweb/public/diary/test2.html
6http://diary.example.com/test3.htmlweb/public/diary/test3.html

やっぱり、サブドメイン → メインドメインの順でファイルを見ているのか。 予想外だったのは 3 番。 てっきり 404 Not Found が表示されると思っていたら、 300 Multiple Choices が表示された。 test3.html は無いけど、 test1.html と test2.html ならあるよという、そんな感じ。

Twitter:

TextDrive でサブドメイン (3) - サブドメインと ServerName

http://diary.example.com/ に tDiary を入れてみたけど、はてなブックマークカウンタープラグインがうまく動かない。 自分の URL を http://diary.example.com/ じゃなくて、 http://example.com/ と認識している。

phpinfo を動かして環境変数を調べてみたところ、どうも ServerName が原因みたい。

HTTP_HOST    diary.example.com
SERVER_NAME  example.com

例のごとく、 TextDrive のヘルプを見てみる。 12.7. My subdomain shows or redirects to my main domainにヒントが書いてあった。

Subdomain gets redirected to main domain automatically.

http://subdomain.example.com/subdir にアクセスすると、 http://example.com/sub/ にリダイレクトされるよ、という内容。 Apache が自身のサーバ名を知るときに ServerName を参照しているのが原因だと。 たしかに、 Apache の設定ファイルは以下のようになっている。

ServerName example.com

Webmin を使って UseCanonicalName を無効 (off) にするといいよ、と書かれていたので、手順どおりに「Use hostname supplied by browser (ブラウザから送られたホスト名を使う)」にチェックを入れる。 再度、 phpinfo で環境変数を調べると、以下のようになっていた。

HTTP_HOST    diary.example.com
SERVER_NAME  diary.example.com

これでプラグインも正しく動いたし、一件落着。 ちなみに、「ブラウザから送られたホスト名」とは、 HTTP リクエストの HOST ヘッダのこと。

Twitter:

トップ «前の日記(2006-10-19 (木)) 最新 次の日記(2006-10-22 (日))»