У меня простой сайт, базовый язык — английский с переводом на немецкий.
Вот настройка доступа к сайту из 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
отображает немецкий контент.
Затем я построил простой переключатель языка:
<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 как 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 для английского языка.
Мы используем эту конфигурацию соответствия, и она работает нормально:
ezpublish:
siteaccess:
match:
Compound\LogicalAnd:
cro:
matchers:
Map\URI: { cro: true }
Map\Host: { '%site_domain%': true }
match: cro
Map\Host:
'%site_domain%': eng
Обратите внимание, что я использую %site_domain%
параметр, который я определил в себе app/config/parameters.yml
, Вы также можете сделать это или использовать жестко закодированное значение.
Недостатком является то, что вам нужно добавить все новые доступы сайта в список в Compound\LogicalAnd
Совпадение, но если у вас есть простой сайт с парой посещений сайта, я думаю, все будет хорошо.
Других решений пока нет …