0

Yahooがこれを指摘しているように、私は2つのことをしたいと思っています。

  • URIホストの両方を使用してフロントコントローラーのルートを解決する
  • テンプレートを作成/使用するときは、「相対」ルート(のような'/img/st.jpg')ではなく、完全なルート(のような'//s1.mysite.com/st.png')などを返します。インクリメントカウンター(=>次の静的リンクは'//s2.mysite.com/whatever.png'のようになります)
  • さらに進んで、私は言語('//s1.私たち.mysite.com/st.png''//s1.fr.mysite.com/st.png'のような)を含めたいです

これをどのように行いますか?次のようなApacheルールを簡単に実行できます。

RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9\-]+)\.((([a-zA-Z0-9\-]+)\.)+)([a-zA-Z0-9\-]+)\.(fr|com|net|org|eu)$
RewriteRule BLABLABLABLA

ここではこれ以上先に進みませんが、RewriteRulesについては問題ありません。問題は、適切な「最適化された」URLを含むWebページを構築することです。これをどのように行いますか?

よくわからない場合は、申し訳ありませんが、実際のサンプルを紹介します。このコードを変換したいと思います。

<img src="/p/s/pizza.png" alt="aaa" />
<div class="img-large">
    <img src="/l/l/pizza.png" alt="bbb" />
</div>

<img src="http://fr.s2.partner.mysite.fr/p/s/pizza.png" alt="aaa" />
<div class="img-large">
    <img src="http://fr.s3.partner.mysite.fr/p/l/pizza.png" alt="bbb" />
</div>

(可能な限り明確にするためにTwigテンプレートコードを作成しませんでした)。これをどのように行いますか?

4

2 に答える 2

0

Symfony 2.2はホストによるルーティングをサポートしています:http ://symfony.com/doc/master/components/routing/hostname_pattern.html

Symfony 2.1以下を使用している場合、ルーティング自体にサブドメインを使用することはできませんが、サブドメインに基づいてページの読み込み時に何かを実行するようにリスナーを設定できます。

リスナーの例:

#config.yml
services:        
  myListener:
    class: myApp\MyBundle\Controller\MyListener
    arguments: 
        container: "@service_container"
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 64 }



class MyListener extends controller
{

    public function __construct($container)
    {
        $this->container = $container;
    }    

    public function onKernelRequest(GetResponseEvent $event)
    {       
        $currentHost = $request->getHost();
        // do something, i.e set the language
    }

}
于 2013-02-01T23:20:17.823 に答える
0

ルーティングジェネレータを拡張します。私は、hostnameという名前の追加のパラメーターをgenerateRouteメソッドに追加すると言います。ルーティングジェネレータをオーバーライドする方法の簡単な例を以下に示します。

カスタムURLジェネレータークラスhttp://symfony.com/doc/master/cookbook/bundles/inheritance.html

次に、静的アセット専用のカスタムTwigタグを作成して、新しいgenerateRouteメソッドを呼び出し、任意の戦略を使用してホスト名と呼ばれる新しいカスタムパラメーターを設定できます(ランダム、ある種のインクリメントロジックに基づく(おそらく、セッション))。これは概念実証にすぎず、ドキュメントをグーグルで読んだり読む必要がありますが、機能しない理由はありません...

于 2013-02-02T06:23:17.780 に答える