6

複数のドメインで実行するには、zend_framework に基づいて同じサイトを実行する必要があり、アプリケーションはどのドメインで実行されているかを認識する必要があります。Zend_Controller_Router_Route_Hostname を使用するのは良い考えだと思いましたが、いくつかの問題に遭遇しました。

ブートストラップに次のコードがあります

$ctrl = Zend_Controller_Front::getInstance();
$router = $ctrl->getRouter();
$router->removeDefaultRoutes();     

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    ':sub-domain.:domain.:tld'
);

$defaultRoute = new Zend_Controller_Router_Route(
    ':controller/:action/*',
    array(
        'controller' => 'index',
        'action' => 'index'
    )
);
$router->addRoute('default',$hostnameRoute->chain($defaultRoute));

「サブドメインが指定されていません」というエラーが表示されます。ルートがリクエスト URL と照合される前に、レイアウト ファイルの $this->url が定義済みのルートを使用して URL を組み立てていることを突き止めたと思います。ホスト名ルートにデフォルト値を設定すると、エラーは発生しませんが、レイアウトの URL は現在のホスト名の値ではなくデフォルト値を使用します。

誰がこの問題を解決するのを手伝ってくれますか?

4

2 に答える 2

1

URL の生成に問題があります。次のように、ホスト名のルート定義で変数のパラメーターを指定する必要があります。

echo $this->url(array('sub-domain' => 'your-subdomain-here', 'domain' => 'your-domain', 'tld' => 'com'), 'default');

そうしないと、Zend URL ヘルパーは定義 :sub-domain.:domain.:tld の URL を生成できません。提供された例は、この URL を生成します: your-subdomain-here.your-domain.com/current_controller/current_action

サブドメインが有効な変数名かどうかも確認してください。サブドメインに変更してみてください。

于 2012-03-01T17:41:34.440 に答える
1

サブドメインのデフォルトを定義する必要があります。$defaultRouteを次のように変更します。

$defaultRoute = new Zend_Controller_Router_Route(
    ':controller/:action/*',
    array(
        'controller' => 'index',
        'action' => 'index'
    )
);

それはうまくいくはずです。

于 2011-07-02T19:30:52.020 に答える