2011-02-07 9 views
0

zendフレームワークアプリケーションを開発し、そのサインアップページとログインページがドメインhttp://domain.com(今ではすべてのページがhttp://domain.com)サブドメイン:http://subdomain.domain.comの他のページ(認証後にリダイレクトする必要があるページ) 解決方法を教えてください。 ありがとうございます。Zend Frameworkアプリケーションで、あるドメイン上のログインページとサインアップページとサブドメイン上の他のページ

+0

とは何ですか? – Distdev

+0

私たちはhttp://domain.comにアプリケーションを持っており、ログインページはhttp://にリダイレクトされた後、http://domain.com/loginとhttp://domain.com/signupのようなものですdomain.com/controllerを参照してください。http://subdomain.domain.com/controllerにリダイレクトする必要があります。ログアウト後、ユーザーはhttp://domain.com/loginでなければなりません。私はそれを作る方法をかなり理解していません。 – Oleg

+0

その後、ユーザーのためにさらにドメインが必要になる可能性があるため、サブドメイン1にリダイレクトされるユーザーもあれば、サブドメイン2にリダイレクトされるユーザーもあります。どのようにしてそれを作るかありがとうございました。 – Oleg

答えて

1

私はこの種のことを、私の主要なZFアプリでやったことがあります。それは複雑な3つの質問ですが、うまくいけば、これはあなたが正しい方向に開始されるようにします。

最初のはセッションクッキーです。セッションCookieを設定するときは、ワイルドカードドメインパラメータを使用する必要があります。

Zend_Session::start(array('cookie_domain' => '.domain.com')); 

注ドット(「」)する前に、 『domain.com』:あなたのブートストラップまたはどこか前に、あなたが正常にセッションを開始するときに、ラインなどが含まれます。これにより、Cookieはdomain.comに適用され、その下のすべてのサブドメインも適用されます。

は、サイト全体のURLです。リダイレクタのアクションヘルパーのgotoUrl()メソッドを使用できます。ユーザーをリダイレクトするアクションメソッドの終わりに、このような行を使用します。

もちろん
$this->_redirector->gotoUrl('http://domain.com/somewhere/else'); 

、あなたがこのような構成にドメインを保存するなど、他の手段によって、URL文字列を組み立てたい場合がありますURLパスを生成するZFのネイティブメソッドの1つを使用してパスを連結します。詳細については、Zend_Controller_Action_Helper_Redirectorのドキュメントを参照してください。また、サイトのすべてのURLについて注意し、適切なドメインが各リンクに含まれていることを確認する必要があります。

第3のは、サブドメインが関係している場合にアプリがルートをどのように解釈するかを示します。これを達成するにはいくつかの方法がありますが、1つは使用する各サブドメインに対応するモジュールをアプリケーション内に作成することです。その後、Controller Pluginを使用してZFの通常のルーティングメカニズムを妨害し、サブドメインに基づいてモジュール名を適切に設定します。次のようなもの:

class My_Controller_Plugin_RouteMySubdomains extends Zend_Controller_Plugin_Abstract { 

    public function routeShutdown(Zend_Controller_Request_Abstract $request) { 
     $hostname = $request->getHttpHost(); 
     if (strlen($hostname) > strlen('domain.com')) { 
      $moduleName = preg_replace("/\.domain\.com$/", '', $hostname); 
      $request->setModuleName($moduleName); 
     } 
    } 
} 

このプラグインを使用するには、ZFに伝える必要があります。

resources.frontController.plugins.routeMySubdomains = "My_Controller_Plugin_RouteMySubdomains" 

幸運:あなたは基本的な設定のためのapplication.iniファイルでZend_Applicationを使用している場合、あなたはこのような行を追加する必要があります!

関連する問題