ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Let's PHPコミュのphpからサブドメインを作成するには?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
「MyMiniCity」というWebコンテンツがあります。
http://vixar.myminicity.com/

アクセスする度に自分の街が発展していくというコンテンツです。

このコンテンツで、ユーザー登録すると、自分のサブドメインが与えられるのですが、これはphpでできるのでしょうか?

多分サーバの知識とかも必要だと思うのですが、初心者にもわかるように教えてください。

コメント(11)

DNSをワイルドカードで設定すればいいだろうから、
rewrite使ってもいいし、
PHPだからどうのこうのということはないですね。。。
PHPだけではできません。

サブドメインを含んだホスト名(FQDN)が、どのIPアドレスなのかを教える為のDNS設定をしなければいけません。

また、そのIPアドレス上で動くWebサーバに、該当のFQDNでアクセス要求があった場合の設定も追加しなければなりません。

ユーザ登録後、サブドメインを割り当てたサイトを自動的に利用できるようにするためには、この辺りの設定作業をどう自動化するかによりますね。

やりようはいろいろありますので、自分にあった方法を探してください。
ユーザー情報等のデータ管理自体はphp等での話になりますが、サブドメイン付きドメインでのアクセスそのものについては基本的には.htaccessなりなんなりのwebサーバ側での設定の話になります。
apacheを対象にして簡単に説明すると、mod_rewrite等を使用して、
http://hoge1.domain.com
へのアクセスを
http://domain.com/program.php?userid=hoge1 (*1)

http://domain.com/hoge1/ (*2)
のような感じになるように(こっそり)変換してやる訳です。
(*1)の場合はサブドメインを直接プログラムに渡す場合、(*2)はユーザー毎にディレクトリを用意してそこにプログラム等を設置しておく場合のやりかたです。

後、ネームサーバの設定も必要です。
やり方にもよりますが、サブドメインの設定で*(ワイルドカード)を設定してどんなサブドメインでも特定ドメインに渡されるようにしたり、サブドメイン一覧を作ってそれを読み込ませたりするような仕組みも必要です。

なお、ネームサーバ側の設定に問題が無い場合はphp側で$_SERVER['HTTP_HOST']等からサブドメインを抽出するという手もありますがあんまり実用的じゃないかも。

サブドメイン mod_rewrite 辺りでググると実例が出てきますのでその辺を参照に実際に色々設定してみるのが良いかと思います。
DNS設定で「*」のAレコードは大前提として、mod_rewriteを使わなくてもwebサーバ側でCatchAllで特定のディレクトリに割り当てが出来ればいいですね。

#レンタルサーバでいうとXREA/CoreServerではそういう設定が可能です(ちなみにApache1.3系)。

あとはphpスクリプトで$_SERVER['HTTP_HOST']を元に処理すればいいと思います。DBのキーにしてしまっておけば、スクリプト自体は(一度ユーザーIDを抽出してしまえば)それほど難しく考える必要はないでしょう。
Apacheでmod_rewriteを使わない方法の1つとして mod_vhost_aliasがあります。
http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html

VirtualDocumentRoot /path/to/dir/%1
と設定すると、
/path/to/dir/fooディレクトリをphpで生成してあげるだけで
http://foo.example.com/が作れるので便利です。
横から失礼します。
私がしたいことはまさにLestimityさんのおっしゃる事なのですが、
具体的にはどのように設定した方が良いのでしょう?
xreaを使用してます。

私がしたいのは、ディレクトリではなくPHPへ渡す変数をサブドメインに割り当てたいのです。
具体的には、「http://sub1.homepage.com/」へアクセスを
「/hoge.php?id=sub1」で処理したいのです。


VirtualDocumentRoot /virtual/ID/public_html/test.php=%1

としたら500エラーが出てしまいました。
DNSの方は「a * IPAdress」としてあります。
よろしくお願いします。
>7

XREAということなので、default.example.comの受け入れの設定はされていますよね?そうしておけば(任意の名前).example.comへのアクセスはpublic_html/default.example.com/へ割り当てられます。

なのでpublic_html/default.example.com/.htaccessでmod_rewriteを使えばいいと思います。

私だったら、そのままhoge.phpでGETを処理する代わりに$_SERVER['HTTP_HOST']からIDを取り出して処理しますけどね(mod_rewriteでURLを書き替える意味はあまりないと思うので)。


ちなみに

>VirtualDocumentRoot /virtual/ID/public_html/test.php=%1

これはApacheのconfファイルということでは?なのでXREA(というかレンタルサーバ)では無理かと。
shimix さん
$_SERVER['HTTP_HOST']を使うという簡単な方法を忘れていました。
これにて無事にやりたいことが出来ました。
本当にありがとうございましたm(__)m

皆さん、ありがとうございます。

レンタルサーバではサブドメインの設定も面倒なので、ちょっと難しそうです・・・。
他人のサーバじゃぁねぇ。。。
出来ないところではできないです。。。

value domain は、ワイルドカードOKだけど、
xrea側は。。。

自由にできるとこなら、httpd.confでも、ワイルドカードつかえるのにね。。。

間違っても、スパマーな用途には利用しないでくださいねむふっ
処理がめんどくさいから。。。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Let's PHP 更新情報

Let's PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング