URL-адрес ezplatform (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 отображает немецкий контент.

Затем я построил простой переключатель языка:

<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 для английского языка.

0

Решение

Мы используем эту конфигурацию соответствия, и она работает нормально:

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 Совпадение, но если у вас есть простой сайт с парой посещений сайта, я думаю, все будет хорошо.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]