dポイントプレゼントキャンペーン実施中!

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のファイル名、クラス名などは複雑になっても構いません。

宜しくお願いします。

A 回答 (3件)

やり方は色々あると思いますが、私が試した方法に関しまして。



・mikan_appと、ringo_appと、「parent_app」という物を別でつくっておく
で、config値とかそういうものを全部parent_appの中から参照しちゃおうという手です。
mikan_appと、ringo_appの中にある、bootstrap.phpとか、database.phpの中身を、
bootstrap.php--------------------------
<?php

require_once ROOT . DS . 'parent_app' . DS . 'config' . DS . 'bootstrap.php';

?>
みたいなものだけにしてしまう。
そうすれば、parent_appの中のbootstrap.phpを読めます。
そして、parent_appのbootstrap.phpの中を、
<?php
App::build(array(
'plugins' => array(
APP . 'plugins' . DS,
ROOT . DS . 'parent_app' . DS . 'plugins' . DS,
),
'models' => array(
APP . 'models' . DS,
ROOT . DS . 'parent_app' . DS . 'models' . DS,
),
'views' => array(
APP . 'views' . DS,
ROOT. DS . 'parent_app' . DS . 'views' . DS,
),
'controllers' => array(
APP . 'controllers' . DS,
ROOT . DS . 'parent_app' . 'controllers' . DS,
),
'datasources' => array(
APP . 'models' . DS . 'datasources' . DS,
ROOT . DS . 'parent_app' . DS . 'models' . DS . 'datasources' . DS,
),
'behaviors' => array(
APP . 'models' . DS . 'behaviors' . DS,
ROOT . DS . 'parent_app' . DS . 'models' . DS . 'behaviors' . DS,
),
'components' => array(
APP . 'controllers' . DS . 'components' . DS,
ROOT . DS . 'parent_app' . DS . 'controllers' . DS . 'components' . DS,
),
'helpers' => array(
APP . 'views' . DS . 'helpers' . DS,
ROOT. DS . 'parent_app' . DS . 'views' . DS . 'helpers' . DS,
),
'vendors' => array(
APP . 'vendors' . DS,
ROOT . DS . 'parent_app' . DS . 'vendors' . DS,
),
'shells' => array(
APP . 'shells' . DS,
ROOT . DS . 'parent_app' . DS . 'shells' . DS,
),
'locales' => array(
APP . 'locales' . DS,
ROOT . DS . 'parent_app' . DS . 'locales' . DS,
)
));


?>
としてやれば、アクセスしてきた、mikan/ringoのディレクトリの中のファイルを参照した後なければ、parent_appの中のファイルを参照しに行きます。
後は、mikan/ringoの共通で使うヘルパなんかは、parent_appの中の該当ディレクトリにおいて
それぞれが単独で使うようなものは、それぞれの、mikan_app/ringo_appの中につくる
    • good
    • 0
この回答へのお礼

教えていただいた方法を参考に作成する事ができました!
ありがとうございました。

お礼日時:2011/02/22 01:24

連投で、ごめんなさい。

少しだけ書ききれなかった。

最後に、フロントのindex.phpは、それぞれ物理的にディレクトリを、
mikan/index.php
ringo/index.php
と二つ用意して、APP_DIRだけ、書き換えればよいかと。
    • good
    • 0

こんばんは。



>現在は下記のようにしています。
これは上手く動いているんですかね?

一番手っ取り早いのは、mod_rewriteを使う・・・。

RewriteEngine On
RewriteRile ^/([^/]+)/([^/]+)/([^/]+)$ /$1_$2/$3 [L]

インチキっぽいですが、せっかく動いているので・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!