0

私のアプリケーションでは、サブドメインを使用して言語を設定したいと考えています。例: - site.com (英語) - de.site.com (ドイツ語) - nl.site.com (オランダ語)

サブドメイン構成を次のように設定しました。

'home' => array(
           'type' => 'hostname',
            'options' => array(
                'route' => ':lang.site.:tld',
                    'defaults' => array(
                        'controller' => 'Application\Controller\Application',
                        'action'     => 'index',
                        'lang'       => 'en',
                    ),
                    'constraints' => array(
                        'lang'     => '(|nl|de)',
                        'tld'      => '(localhost|com)',
                    ),
                ),

私が直面している問題は、サブドメインなしで英語版 (site.com) をナビゲートしたいだけなのに、「ページが見つかりません」に遭遇したときです。..'route' => ':lang.site.: tld'.. as '[:lang].site.:tld' しかし、これはうまくいかないようです。

誰?:)

前もって感謝します、

ニック

4

1 に答える 1

0

私の賭けは、あなたが:langparamの後にドットを持っていて、それがURLのようなsite.comパス(.site.comかもしれない)を許可しないということです. だから私は:langオプションにしました - それは、空の場合、デフォルトen値にフォールバックするはずです。:tldまた、 param が存在する理由も見当たりませんでしたので、捨てました。あなたが提供したURLの例のために、そもそも必要がなかったと思います。

   'home' => array(
        'type' => 'hostname',
        'options' => array(
        'route' => '[:lang][.]site.com', 
            'defaults' => array(
                'controller' => 'Application\Controller\Application',
                'action'     => 'index',
                'lang'       => 'en',
             ),
             'constraints' => array(
                 'lang'     => '(en|nl|de)',
             ),
    ),

enパラメータ値が存在する場合にのみ制約をチェックする必要があるため、一致には影響しません。

テストする時間はありませんでしたが、ZF2 ルーティングに関する私の理解が正しければ、動作するはずです。

于 2013-10-29T07:52:41.427 に答える