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

このQ&Aのポイント
  • cakephp コントローラにドメインでアクセスしたいと思っております。現在、サーバのバーチャルホストの設定で、ドキュメントルートにコントローラのパスを指定しておりますが、Internal Server Errorと表示されてしまいます。
  • 具体的には/home/test/lib/test1/controllers/test_controller.phpのindexアクションに対して、取得したドメインでアクセスしたいと思っておりますが、設定したドキュメントルートが正しくないため、Internal Server Errorとなってしまいます。
  • 解決策としては、正しいドキュメントルートのパスを指定するか、別の方法として.htaccessファイルを使用することができます。.htaccessファイルを使用する場合、以下のような設定を記述する必要があります。
回答を見る
  • ベストアンサー

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
  • ありがとう数1

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

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

DocumentRootはディレクトリだよ。 hogehoge.comでアクセスされたときどこのディレクトリを読ませるのかの設定。 cakephpの動きを決めるのは app/Config/routes.php だよ。

yama-maron
質問者

お礼

Taiyonoshizuku様 早速のご回答のほど、ありがとうございます。 routes.phpについて調べたところ、色々なことができることが分かりました。 これで問題が解決できるかと思います。 どうもありがとうございました。

関連するQ&A

  • 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
  • VirtualHostでIPとドメインアクセスで設定を分ける場合ドメインは1つでOKでしょうか?

    ドメイン指定の場合とIPでアクセスがあった場合で ドキュメントルートを分けたいのですが、 下記のようにサブドメイン1つでもVirtualHost可能でしょうか? <VirtualHost 210.100.100.100> DocumentRoot /var/www/html/htdocs ServerName www.a.jp </VirtualHost> <VirtualHost 210.100.100.100> DocumentRoot /var/www/html2/htdocs </VirtualHost>

  • Apache VirtualHost でワイルドカード(?)設定

    Apache2.2.3を利用しています。 virtualhost.confに50程度のサブドメインを、 下記のように設定をしています。 *************************************************** <VirtualHost *:80>   ServerName suzuki.example.com   DocumentRoot /var/www/html/suzuki/ </VirtualHost> <VirtualHost *:80>   ServerName sato.example.com   DocumentRoot /var/www/html/sato/ </VirtualHost> <VirtualHost *:80>   ServerName yamada.example.com   DocumentRoot /var/www/html/yamada/ </VirtualHost> ・ ・ ・ *************************************************** つまり *************************************************** <VirtualHost *:80>   ServerName ▲▲▲.example.com   DocumentRoot /var/www/html/▲▲▲/ </VirtualHost> *************************************************** のようなルールになっているのですが、 これをワイルドカード使ってできないでしょうか? 宜しくお願いします!

  • バーチャルホストで2個のIPを同じドメインに当てる方法

    はじめまして。 現在、ネームベースでのバーチャルホストで約20のドメインを運用しているのですが、諸事情があり、現在のIPを別のIPに変更する必要が出てしまいました。そこで、分からないことがあり、困っております。ご存知の方がいらっしゃいましたら、ご教授下さい。 まず、新しいIPアドレスを申請して下記のような例でサーバーに追加設定をしました。 210.111.111.111(現IP) 210.222.222.222(新IP) この2つが1つのNICに乗っており、現状2個のIPを持っています。 現IPから新IPにシームレスにドメインを移行させたいのですが、バーチャルホストの設定は、下記のようする事は可能なのでしょうか? ■httpd.confのバーチャルホスト記述部分 #hogehoge.com <VirtualHost 210.111.111.111:80> ServerName hogehoge.com:80 ServerAlias www.hogehoge.com DocumentRoot /var/www/vhosts/hogehoge.com/httpdocs </VirtualHost> <VirtualHost 210.222.222.222:80> ServerName hogehoge.com:80 ServerAlias www.hogehoge.com DocumentRoot /var/www/vhosts/hogehoge.com/httpdocs </VirtualHost> #fugefuge.com <VirtualHost 210.111.111.111:80> ServerName fugefuge.com:80 ServerAlias www.fugefuge.com DocumentRoot /var/www/vhosts/fugefuge.com/httpdocs </VirtualHost> <VirtualHost 210.222.222.222:80> ServerName fugefuge.com:80 ServerAlias www.fugefuge.com DocumentRoot /var/www/vhosts/fugefuge.com/httpdocs </VirtualHost> --------------------------------------------------------------- 仮に、上記が可能だったとして、もう一つDNS(BIND)の設定の問題があります。 ■fugefuge.comのゾーンファイル $TTL 86400 @ IN SOA ns.fugefuge.com. root@fugefuge.com ( 1201933204 10800 3600 86400 10800 ) fugefuge.com. IN NS ns.fugefuge.com. ns.fugefuge.com. IN A 210.111.111.111 fugefuge.com. IN A 210.111.111.111 fugefuge.com. IN MX 10 mail.fugefuge.com. --------------------------------------------------------------- このゾーンファイルを、現IP(210.111.111.111)から、新IP(210.222.222.222)に変更したとします。 その場合の名前解決は、下記のnamed.confのallow-transferに、現IPと旧IPを書き込むことで解決できるのでしょうか? ドメイン(fugefuge.com)のDNS切り替えを申請したときのプロバケーション時に、データベースが更新されていないDNSから、 旧IP宛にリクエストが合った場合に、新IPへ転送してくれるのでしょうか? ■/etc/named.confのfugefuge.comの記述部分 zone "fugefuge.com" { type master; file "fugefuge.com"; allow-transfer { 210.111.111.111;210.222.222.222; common-allow-transfer; }; }; --------------------------------------------------------------- 長くなり、分かりにくい部分があるかもしれませんが、どうぞよろしくお願いします。

  • 1つのIPアドレスでサブドメインをSSLにするには

    1つのIPアドレスでサブドメインをSSL通信にしたいと思います。 https://www.hoge.com https://geho.hoge.com しかしIPはひとつです。 その場合ジオトラストでワイルドカード証明書(サブドメインなら 無制限に増やせる)を取得して設定をしてみましたが設定がうまく行き ません。 流れとしてcentos5でhttpd.confにVirtualHostを設定しました。 こんな感じです。 <VirtualHost *:80> ServerAdmin admin@hoge.com DocumentRoot /var/www/www.hoge.com ServerName www.hoge.com ErrorLog /var/log/www.hoge.com.err CustomLog /var/log/www.hoge.com.log combined </VirtualHost> CSRを作成して認証してもらいssl.confの設定しました。 # General setup for the virtual host <VirtualHost *:443> DocumentRoot "/var/www/www.hoge.com" ServerName www.hoge.com:443 鍵も下記のように変更しました。 SSLCertificateFile /usr/local/certs/server.crt SSLCertificateKeyFile /usr/local/certs/server.key それでもなぜかドメインは一つかしか使えず、さらにhttpsで アクセスするとIEでは 「このページにはセキュリティで保護されている項目と保護されて いない項目が含まれます」 とエラーがでます。 サイトはPHPで構築したものですが小規模なサイトです。 非常に困っておりSSL通信をVirtualHost毎に行いたいと思います。 どうすれば良いかまったくわからない状態です。 アドバイスのほどよろしくお願いします。

  • Apacheのバーチャルホストで設定したドメインで上の階層にアクセスできてしまいます

    Apacheのバーチャルドメインにてmydomain.jpを/www/mydomainに割り振ったのですが 試しに上の階層にファイルを置いてphpでアクセスしてみたのですが、アクセスできてしまいました。。。 これはセキュリティ上よろしくないと思うのですが、指定フォルダ以上にアクセスできないように設定するにはどうすればいいのでしょうか(アクセス出来ないようにしたいです)。 あまりサーバーに詳しくないので設定方法のキーワードなどヒントだけでもご教授いただければと存じます。 httpd.confの設定--- NameVirtualHost *:80 <VirtualHost *:80> ServerName www.mydomain.jp ServerAlias mydomain.jp *.mydomain.jp DocumentRoot /www/mydomain </VirtualHost> phpの記述例--- include_once("../test.php");//上の階層のファイルにアクセスできてしまう

  • CentOSでのマルチドメイン設定

    初めてのサーバー構築でCentOS5を導入し、teraTermから設定を行っています。 メインドメイン設定、FTP設定、httpd設定などを行い、メインドメインの表示まで完了しました。 ここで、マルチドメインを設定すべく、httpd.confの設定を行っているのですが、 うまくいかないので質問させて頂きました。 vi /etc/httpd/conf/httpd.confでファイルを修正。 メインドメインが一つあり、さらに二つのドメインを追加したいと考えています。 下記のようにバーチャルホストの設定したところ、 Server2は問題なく正常に表示されるのですが、Server3のドメインを ブラウザで入力すると、指定したパスのルートフォルダの場所ではなく、 メインドメインのルートフォルダが参照されてサイトが表示されます。 ※ドメイン表記は仮のものです。 #メイン <VirtualHost *:80> ServerAdmin main@main.com DocumentRoot /var/www/html/ ServerName main.com ServerAlias main.com ErrorLog logs/S1-error_log CustomLog logs/S1-access_log common </VirtualHost> #ドメイン2 <VirtualHost *:80> ServerAdmin s2@sample.com DocumentRoot /var/www/html/domain2.com/ ServerName domain2.com ServerAlias domain2.com ErrorLog logs/S2-error_log CustomLog logs/S2-access_log common </VirtualHost> #ドメイン3 <VirtualHost *:80> ServerAdmin s3@sample.com DocumentRoot /var/www/html/domain3.com/ ServerName domain3.com ServerAlias domain3.com ErrorLog logs/S3-error_log CustomLog logs/S3-access_log common </VirtualHost> まとめますと、メインドメイン、ドメイン2は正常に表示されるが、 ドメイン3がメインドメインのルートフォルダを参照してしまい、表示されない。 追加情報が必要な場合追記しますが、 二つ以上のマルチドメインをせっていする場合は、どのように設定したらよいでしょうか?

  • ApacheのVirtualHostを設定したい

    ApacheのVirtualHostを設定したい http://xxxxx.jp http://yyy.xxxxx.jp:5041 http://zzz.xxxxx.jp:5042 という3種類の接続方法をしたいが為に、VirtualHostを設定していますが、うまく設定できずに 困っています。 Listen 80 Listen 5041 Listen 5042 NameVirtualHost 111.222.333.444:80 NameVirtualHost 111.222.333.444:5041 NameVirtualHost 111.222.333.444:5042 <VirtualHost 111.222.333.444:80> ServerName xxxxx.jp DocumentRoot /test </VirtualHost> <VirtualHost 111.222.333.444:5041> ServerName yyy.xxxxx.jp DocumentRoot /test2 </VirtualHost> <VirtualHost 111.222.333.444:5042> ServerName zzz.xxxxx.jp DocumentRoot /test3 </VirtualHost> 今現状、こんな設定なのですが、これだと http://yyy.xxxxx.jp http://zzz.xxxxx.jp とアクセスすると、 http://xxxxx.jp と同じ結果が表示されてしまいます。 サブドメインが付与されているアドレスは、あくまでもポート指定が 5041、5042と正しく指定された場合のみアクセスされてほしいです。 (そうじゃないときは何らかのHTTPエラーが出ればいいです) どう設定すれば実現できるでしょうか?

  • VirtualHostの設定

    名前ベースのVirtualHostの設定を試してるのですが、 Permission denied: file permissions deny server accessとなり アクセスできません。wwwはアクセスできます。 サイトでいろいろ調べているのですが、解決できませんでした。 パーミッションも777に設定しています。httpd.confの設定を載せます。pperというユーザーを追加しました。 *ホストとドメインは仮名 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /var/www/html ServerName www.pani.mydns.jp ErrorLog logs/www.pani.mydns.jp-error_log CustomLog logs/www.pani.mydns.jp-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/pper/html ServerName test.pani.mydns.jp ErrorLog logs/test.pani.mydns.jp-error_log CustomLog logs/test.pani.mydns.jp-access_log common </VirtualHost>

  • CakePHPでヘルパーが使えません

    CakePHPを使用して開発を行っています。 app/views/helpers/common_lib.php に、class CommonLibHelper extends AppHelper としてヘルパークラスを作り、コントローラーの$helpersにarray('CommonLib')を記述しました。 ビューファイルにて、$common_lib->function() として、ヘルパーで定義したメソッドを呼ぶと、 undefined variable: common_libと言われてしまいます。どうしてか教えていただけませんか? クラス名やファイル名は合っていると思うのですが・・・。 CakePHPのバージョンは、1.3.6です。

    • ベストアンサー
    • PHP

専門家に質問してみよう