2011-08-16 15 views
2

2つの異なるコントローラの下にあるサイトに対してこの2つの異なるモジュールがあるとします。同様に、index.php/controller1/...index.php/controller2/...CodeIgniterコントローラ名に基づくサブドメイン

ここで、コントローラURLの1つをサブドメインに含めることはできますか?この例では、mainwebsite.com/...index.php/controller2/..のようなURLにindex.php/controller1/...と言うことができます。 controller2.mainwebsite.com/のような別のURLに?

もしそうなら、どうすればいいですか? routes.phpまたは.htaccess?いずれの場合でも、私は関連リンクに私を指すことができる場合、それを行う方法について少し助けていただければ幸いです、それはまた役に立つでしょう。

+0

たとえば、サイトに2つのセクションがあり、1つがショッピングカートで、もう1つがブログであるとします。買い物カゴセクションのすべての機能はcart.phpコントローラによって制御され、他の機能はblog.phpコントローラによって制御されます。また、ユーザーがmysite.comにアクセスしたときにカートをデフォルトのコントローラにして、ブログを訪問したときに、そのURLがblog.mysite.comとして表示されるようにしたい。それが要件です。 – redGREENblue

答えて

5

私の意見では、あなたがしようとしているのはちょっとばかだが、私の言うところではないと思う。ここで

は限り私はそれを見るようにあなたのオプションは次のとおりです。

mod_rewriteを使用して、特定のコントローラに特定のサブドメインへのコールをリダイレクトするために、あなたのApacheの設定や.htaccessファイルを変更します(たとえば

私は)これをテストしていません:右方向に少なくともポイントあなた、私が考えなければならない

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^blog.example.com$ 
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) 
RewriteRule ^(.*)$ /index.php/blog/$1 [L] 

を。もちろん、これはあなたのサブドメインが同じIPアドレスを指していることを前提としており、apache仮想ホストはそのサブドメインをあなたの通常のドメインと同じディレクトリに向けるように設定されています。

また、すべてのリンクをサブドメインに指定し、コントローラを省略する必要があります。したがって、通常URLがhttp://www.example.com/blog/cat/awesomeの場合、リンクポイントはhttp://cart.example.com/cat/awesomeにする必要があります。だから、site_url('cart/cat/awesome')のような素敵なヘルパー機能をもう使用することはできません。それは私のためには大変なものになるでしょう。

私はそれが理にかなっていると思います。詳細については、適切なappディレクトリに

複数のアプリケーションをサポートするために、セットアップあなたのCIインスタンスとだけサブドメインのポイントを持っているが

http://codeigniter.com/wiki/Multiple_Applications/

ルートクラスにいくつかのクレイジーなものを行う:

routes.php設定ファイル:

if(preg_match('/^blog/',$_SERVER['HTTP_HOST'])) { 
    $route['(:any)/(:any)/(:any)/(:any)'] = 'blog/$1/$2/$3/$4'; 
    $route['(:any)/(:any)/(:any)'] = 'blog/$1/$2/$3'; 
    $route['(:any)/(:any)'] = 'blog/$1/$2'; 
    $route['(:any)'] = 'blog/$1'; 
    $route['blog'] = 'blog/index'; 
} 

ページに4つ以上のURIパーツが必要な場合は、ルートルールの上部に別の行を追加してください。私はこれがうまくいくかどうかは知りませんが...私は間違いなくそれ以上の仕事の可能性を最小限に抑えることができるショットを与えるだろう。

関連する問題