2017-08-19 6 views
0

のルートにマッピングしていない私は、単純なサイトを持って、基本言語はドイツ語の翻訳と英語である。ezplatformのURL(ez_routeドメイン

ここではezplatform.yml

# Siteaccess configuration, with one siteaccess per default 
siteaccess: 
    default_siteaccess: en 
    list: 
     - en 
     - de 
    groups: 
     site_group: 
      - en 
      - de 
    match: 
     URIElement: 1 

# System settings, grouped by siteaccess and/or siteaccess group 
system: 
    site_group: 
     api_keys: { google_maps: "xxx" } 
     cache_pool_name: '%cache_pool%' 
     var_dir: var/site 
     translation_siteaccesses: [de, en] 
    de: 
     languages: [ger-DE, eng-GB] 
    en: 
     languages: [eng-GB] 
    default: 
     content: 
からのサイトアクセスの設定です

ドイツ語コンテンツをlocalhost:8000ディスプレイに英語のコンテンツにアクセスして、素晴らしい作品、そしてlocalhost:8000/deディスプレイ

私は、単純な言語スイッチャー内蔵さ:

を210
<ul> 
    <li> 

     <a href="{{ url(ez_route(null, {"language": "ger-DE"})) }}" {% if ezpublish.siteaccess.name == 'de' %}class="inactive"{% endif %}> 
      Deutsche 
     </a> 
    </li> 
    <li> 
     <a href="{{ url(ez_route(null, {"language": "eng-GB"})) }}" {% if ezpublish.siteaccess.name == 'en' %}class="inactive"{% endif %}> 
      English 
     </a> 
    </li> 
</ul> 

しかし、今私はSEOの重複コンテンツに問題があることを確認します。ドイツ語のサイトアクセスの場合、言語切り替えプログラムはeng-GB言語のenサイトへのリンクをlocalhost:8000/enと表示します。localhost:8000にする必要があります。

どのようにezにすべての/ enコンテンツを/にリダイレクトするように伝えることができますか?私はよりよい解決策がなければならないと思いますが、私は、ドキュメントにどのように表示されていない:/

私はマッチャはこれにどのように動作するか変更した場合:

siteaccess: 
    default_siteaccess: en 
    list: 
     - en 
     - de 
    groups: 
     site_group: 
      - en 
      - de 
    match: 
     Map\URI: 
      /: en 
      de: de 

私が手英語翻訳のために/ /英語のURLに。

+0

eng-GBがデフォルトのサイトアクセスを維持することがわかっている場合は、単に「Englisch」を定義してください。 –

+0

これはホームページにのみルーティングするためです。私は言語と同じページに戻って土地を切り替える必要があります '... com/somepage' – John

答えて

1

私たちは、この正規表現エンジンの設定を使用していて、それは大丈夫作品:私はapp/config/parameters.ymlで自分自身を定義し%site_domain%パラメータを使用してい

ezpublish: 
    siteaccess: 
     match: 
      Compound\LogicalAnd: 
       cro: 
        matchers: 
         Map\URI: { cro: true } 
         Map\Host: { '%site_domain%': true } 
        match: cro 
      Map\Host: 
       '%site_domain%': eng 

注意。あなたもそれをやることができますし、ハードコードされた値を使うこともできます。

悪い点は、Compound\LogicalAnd matcherのリストにすべての新しいサイトアクセスを追加する必要がありますが、サイトアクセスのカップルでシンプルなサイトがある場合は、それはうまくいくはずです。

+0

これに追加する必要があるものはありますか?私はあなたのマッチを 'cro'と' eng'から 'en'と' de'に変更しましたが、結果は 'Uncaught Symfony \ Component \ DependencyInjection \ Exception \ ParameterNotFoundException:キャッシュにない結果です。 site_domain " in /mnt/4E6E45D36E45B48D/Work/privatezimmer/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:84' – John

+0

完全エラー出力の場合はhttps://pastebin.com/Y9cYyftN – John

+0

マッチングは'%site_domain%'キーワードでは動作しません。値をハードコーディングすると、それは問題ありません。このサイトには自分自身と他の人が働いています。私たちはどちらも異なる開発者URLを持っています。 魔法の '%site_domain%'は完璧でないと思われます。そうでなければ、すべてのサイトアクセスの一致をハードコードする必要があります – John

関連する問題