1つのサーバで複数のドメイン管理

このQ&Aのポイント
  • AWS EC2を使用してウェブサーバを構築し、CakePHPをインストールして複数のドメインを管理する方法について質問があります。
  • すでに2つのドメインを取得しており、それぞれのドメインで異なるコントローラを実行させてページを表示したいと考えています。
  • CakePHPのrouterやサーバのバーチャルホストの設定を使用して、異なるドメインごとに異なるコントローラが実行されるようにすることは可能でしょうか?
回答を見る
  • ベストアンサー

1つのサーバで複数のドメイン管理

AWS EC2を使ってウェブサーバを構築し、CakePHPをインストールしてウェブサイトを実装しております。 すでにドメインを2つ取得しており、それぞれのドメインでアクセスした際に、同じディレクトリにある2つのコントローラをそれぞれ実行させてページを表示させたいと思っております。 ドメイン(例) hoge.com fuga.com コントローラ(例) /lib/app/controllers/hoge_controller.php /lib/app/controllers/fuga_controller.php hoge.comに対しては、 routes.phpで Router::connect('/', array('controller' => 'hoge', 'action' => 'index')); と設定して hoge.comでアクセスした際にhogeコントローラのindexアクションが実行されるようにできましたが、この状態を維持しつつfuga.comでアクセスした際にfugaコントローラのindexアクションが実行されるようにできればと思っております。 cakephpやサーバの設定等は自由に行える環境ですので、cakephpのrouterやサーバのバーチャルホストの設定等で実現できますでしょうか。 お分かりいただける方いらっしゃいましたら、ご教授いただけますと幸いです。 以上、よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

質問者様のコントローラの切り替えでも可能かとは思いますが、 サーバーのバーチャルホストの設定ができるのであれば、 ディレクトリ自体をドメインごとに変えてしまうのがよい気がします。 CakePHPのバージョンが違うかもしれないですが、 ■[CakePHP2.0]複数サブドメインでモデルを共有する http://rzpg.blogspot.jp/2011/11/cakephp20.html イメージ的には↑のサイトのようなイメージです。 そもそもアプリケーションが独立のものかどうかという観点もあるかとは思いますが、 独立ではないにしても、上記サイトのようにうまくモデルを共有するようにして、 イレギュラーなソースコードにしないほうが、(コントローラーを含めてルーティングを制御するとなるとCakePHPのルールにのっとらない形になってしまうと思うので) 保守・メンテナンスの観点からも良いように私としては感じます。

yama-maron
質問者

お礼

megurizumu様 早速のご回答いただきまして、ありがとうございます。 載せていただきましたURLを参考にし、 cakeのrouterを使って解決することができました。 (当方の都合上、ディレクトリ自体を変えることができないため) 色々と勉強になりました。 どうもありがとうございます。

関連するQ&A

  • cakephp コントローラにドメインでアクセス

    cakephp2.6.4、サーバはamazon aws ec2(linux)を使用しております。 /home/test/lib/test1/controllers/test_controller.php のindexアクションに対して、取得したドメインでアクセスしたいと思っております。 現在、サーバのバーチャルホストの設定で、 ドキュメントルートにコントローラのパスを指定しておりますが、 Internal Server Errorと表示されてしまいます。 以下、設定内容です。 ※取得したドメインは、仮にhogehoge.comとさせていただきます。 <VirtualHost *:80> DocumentRoot /home/test/lib/test1/controllers/test_controller.php ServerName hogehoge.com </VirtualHost> 今回のような場合、どのようにしたらよいかお分かりの方いらっしゃいましたら、 ご教授のほどよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 1つのcakePHPで複数のサイトを作成したい

    1つのアプリ(cakePHP)で、複数のサイトが入っている物を作成したいです。 URLであらわすと下記のように、みかんコンテンツとりんごコンテンツが1つのサイトの中に別々にある感じです。 http://ドメイン/mikan/top/index/ http://ドメイン/ringo/top/index/ (http://ドメイン/コンテンツ名/コントローラー名/ファンクション名/) また、ファイル数が膨大になるため、下記のようにフォルダ分けをしたいです。 ●controllersフォルダ controllers   └mikan     └top_controoler.php   └ringo     └top_controller.php ●viewsフォルダ views   └mikan     └top      └index.html   └ringo     └top      └index.html ※controllerとview以外のファイルは共通で使いたい こうしたいのですが、ルーティングなどをいじっても上手くいかず、現在は下記のようにしています。 http://ドメイン/mikan_top/index/ http://ドメイン/ringo_top/index/ (http://ドメイン/コントローラー名/ファンクション名/) ●controllersフォルダ controllers   └mikan     └mikan_top_controoler.php   └ringo     └ringo_top_controller.php しかし、これだとURLがかっこ悪いので、最初に示したURLでアクセスできるようにしたいのです。 何かいい方法は無いでしょうか? controllerやviewのファイル名、クラス名などは複雑になっても構いません。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 301リダイレクトについて

    301リダイレクトについて調べているのですが全く動作しません。 やりたいことは サブディレクトリのページをサブドメインに移動させたいのです。 例: http://www.hoge.com/fuga/index.html/ 上記の/fuga/より一段下の階層を http://piyo.hoge.com/index.html/ に移動させたいです。 色々なサイトを参考にし、 RewriteEngine On RewriteBase /fuga/ RewriteRule ^index\.php$ – [R=301,L] RewriteRule . /fuga/index.php [R=301,L] Redirect 301 /fuga/ http://piyo.hoge.com/index.html/ や RewriteEngine on RewriteRule ^fuga/(.*)$ http://piyo.hoge.com/index.html/$1 [R=301,L] など色々試してみましたが全く動作せず、また初心者のため理解できずに困っています。 どなたかお力を貸していただけたら嬉しいです。 よろしくお願い致します。 使用しているサーバーはhetemlです。

    • ベストアンサー
    • PHP
  • CakePHPでディレクトリ分けをしたい

    CakePHP2.3.4、サーバーはロリポップにて開発を行っております。 やりたいことは、コントローラーのディレクトリ分けです。 以下のようなディレクトリ構造にして、 app  |_Controller  |   |_admin  |    |    |_LoginController.php  ※メソッドはindex()のみと仮定  |    |    |_・・・.php  |    |  |    |_ListController.php  ※メソッドはindex()のみと仮定  |  |_View ※Viewも分けますが、今は省略しています。 アプリケーション「LoginCntroller.php」にアクセスする場合は http://○○.ne.jp/admin/login/index アプリケーション「ListController.php」にアクセスする場合は http://○○.ne.jp/list/index でアクセスしたいです。 自分なりに調べて、「bootstrap.php」に以下追加、 App::build(array(  'Controller' => array(ROOT.DS.APP_DIR.DS.'Controllers'.DS.'Admin'.DS,) )); 「route.php」に以下追加、 Router::connect('/admin/login', array('controller' => 'login', 'action' => 'index')); などと行ってみてはいるのですが、結果、以下のエラーになってしまいます。 Missing Controller Error: AdminController could not be found. Error: Create the class AdminController below in file: app/Controller/AdminController.php <?php class AdminController extends AppController { } Controller直下に配置したアプリケーションに関しては問題なく実行されます。 何が悪いのか見当もつかず困っております。 よろしければご教授いただけませんでしょうか。

    • 締切済み
    • PHP
  • サブドメインとサブディレクトリーについて

    いつもお世話になりしてありがとうございます。 サブドメインについて、躓きましたので教えて戴きたいのですが 今困っているサブドメインについては、例えば 「test.hoge.com」 というサブドメインを作成しました。 そのフォルダーを「/hoge.com/test/」に作成しました。 そうすると、勿論サブドメインの、http://test.hoge.com はアクセス出来ますが、http://hoge.com/test/ にも両方アクセス出来るのです。 サーバーの仕様上どちらも表示するように出来ているのだと思われます。 それで困ったことは、Googleにインデックスされるのは、サブディレクトリーの片方のみで、サブドメイン側はインデックスされません。 これは私が幾つも作ったのですが、どれも駄目で、サブディレクトリーの方のみがインデックスされます。 サブドメインは全くどれもインデックスされません。(WEBマスターツールで確認) 多分これは、同じコンテンツのサイトがもう一つ存在する、コピペのサイトと勘違いされ、合計二つ存在すると認識され、ペナルティー受けインデックスされないものだと思われます。 この場合は、サブドメインは止めてサブディレクトリーのみにした方が良いのでしょうか。 でも、それなら、なんのためにサブドメインが有るのか意味が無くなりますが。 できれば、サブドメインのみが表示、アクセス出来る方法を知りたいのですが。 以上宜しくお願いします。

  • sendmailで特定ドメインに送信できない

    いつもお世話になってます。 ・Aサーバー(192.168.65.170) ・Bサーバー(192.168.13.38) が存在し、両方にqmail、vpopmailがインストールされています。 このたび、AサーバーからBサーバーに移行を予定しておりますが、 現在はAサーバーのqmailが、fuga@hoge.comのSMTPを行っています。 そこで、BサーバーのPHPからメールを送信する際、他のドメインでは 正常に配信されますが、hoge.comへの配信ができません。 試しに、Bサーバーのsendmailコマンドがら実行してみました。 ◎届く echo "test" | /usr/sbin/sendmail -t -i fuga@domain.com ×届かない echo "test" | /usr/sbin/sendmail -t -i fuga@hoge.com maillogを確認したところ、どうやらBサーバーがローカルに配信して いるらしく、Aサーバーに配信していないようです。 (実際はvpopの設定が不完全で、ローカルでボックスに入らずに どこかに消えたか貯まっている模様) コマンドで以下の確認も行いましたが、正常にAサーバーに 向いています。 ◎正常 [www@B ~]$ nslookup mail.hoge.com Server: 192.168.65.153 Address: 192.168.65.153#53 Name: mail.hoge.com Address: 192.168.65.170 ◎正常 [www@B ~]$ telnet mail.hoge.com smtp Trying 192.168.65.170... Connected to mail.hoge.com (192.168.65.170). Escape character is '^]'. 220 mail.hoge.com ESMTP そこで質問ですが、BからAに配送するには ・sendmailコマンドの設定 ・qmailの設定 ・/etc/resolv.confの設定 あたりを変えれば良いのかな、と思ってはいるものの、 どこをどう変更すれば良いのか、ご教示ください。 補足: 負荷分散環境だったりと、実際はもう少し混み入って いますが、このあたりのレジュメはひとまずは不要かと 思い、入れておりません。 IP、ドメインは架空のものですが、A、Bが内部で繋がって いるのは同じです。セグメントの違いも問題ありません。 最終的にはBサーバーに統合されますので、現在の問題は 解決するかと思いますが、移行までは何とか凌ぎたいです。 よろしくお願いします。

  • レンタルサーバーのアカウントのドメインの表示を取り下げたい

    お世話になっております。 example.comという独自ドメインを取得、DNSを正しく設定し、 さくらのレンタルサーバーでは、hogeというアカウントでサーバーを取得している状況で、(ドメイン・アカウント共に仮です) サイトを運営しています。 しかし、ひとつ問題がございまして、 htmlなどを作成し、ftpを使ってUPしたところ、 さくらのレンタルサーバーでの初期ドメイン hoge.sakura.ne.jp と、自分で取得した独自ドメイン example.com で、URLは違うのに全く同じ内容の表示がされてしまいます。 hoge.sakura.ne.jp にアクセスしたら自動的にexample.comのアドレスに飛ぶようにしたいと思って いるのですが、この場合どのようにしたらよいのでしょうか・・・? ※htaccessやcgiは使用可能です

  • [ドメイン名とDNS]Webサーバとメールサーバを同一のIPアドレス上で運営すると・・・・

    知人が利用する、とあるレンタルホスティングサービス(おそらく共用/有料)では Webサーバとメールサーバを同一のIPアドレス上で運営しているようでその設定は以下の通りであった。 (実際のドメイン出すわけにはいかないのでexample.comを利用しているのはご了承ください。また、取得したのはhoge.com.のドメイン名ではありません。仮にそうおいているだけです) dig @ns1.example.com www.hoge.com (途中略) www.hoge.com. 86400 IN CNAME mail.hoge.com. mail.hoge.com. 86400 IN A xxx.xxx.xxx.xxx hoge.com. 86400 IN NS ns1.example.com. hoge.com. 86400 IN NS ns2.example.com. この状態で、http://www.hoge.com/でWebサーバにアクセスすることが出来た。(当たり前) 【次にhttp://mail.hoge.com/でアクセスしたところ、これでもWebサーバにアクセスすることが出来た】 これは問題ないのでしょうか?(問題有りならば解決策を掲示して欲しいです)

  • 一つのドメインで、複数のサーバー(サブドメインなしで)

    一つのドメイン(サブドメインを使わず)だけで、複数のサーバーを使うにはどういった方法があるでしょうか。 例えば、 ここでは、@anet.ne.jp だけで、35万人を管理しています。 一つのサーバーでまかない切れないと思うので、複数のサーバーを利用してると思うのですが、 サーバーが複数になると、ドメインも複数になる(サブドメインを使って www1 とか、www2とか)のが普通とおもうのですが。 http://www.anet.ne.jp/anet_hp/index.html httpサーバーで、アクセスした人だけを振り分ける(分散)というのは、分かるのですが、 メールサーバーとなると、一つ一つ内容が違うので、固有のサーバーが必要で、 同一内容のサーバーを複数置いて振り分けてても意味ないでしょうし。 サーバー機器の設定(サーバーの物理的結合?)でしょうか。

  • マルチドメインサーバの作り方

    LINUX7.0でサーバーをたてていて、現在1つのドメインを割り当てています。 今回、どうしてもこのサーバの領域にもうひとつドメインを割り当てたいのです。 マルチドメインというのが正しいのかすらわかりませんが、とりあえずは xxxxxxx.comにアクセスしたときに、現在aaaaaa.comというドメインで動かしているサーバ内のプログラムを出せればいいのです。 お願いします。教えてください。

専門家に質問してみよう