ezplatform url( ez_route 未映射到域路由
ezplatform url( ez_route not mapping to route of domain
我有一个简单的网站,基本语言是英语,带有德语翻译。
这是 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 的重复内容存在问题。当在德语站点访问时,语言切换器将 link 打印到 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 中得到一个 // 英文。
我们正在使用这个匹配器配置,它工作正常:
ezpublish:
siteaccess:
match:
Compound\LogicalAnd:
cro:
matchers:
Map\URI: { cro: true }
Map\Host: { '%site_domain%': true }
match: cro
Map\Host:
'%site_domain%': eng
请注意,我使用的是我在 app/config/parameters.yml
中自己定义的 %site_domain%
参数。您也可以这样做,或者您可以使用硬编码值。
缺点是,您需要将所有新的站点访问添加到 Compound\LogicalAnd
匹配器的列表中,但如果您有一个简单的站点,只有几个站点访问,我想应该没问题。
我有一个简单的网站,基本语言是英语,带有德语翻译。
这是 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 的重复内容存在问题。当在德语站点访问时,语言切换器将 link 打印到 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 中得到一个 // 英文。
我们正在使用这个匹配器配置,它工作正常:
ezpublish:
siteaccess:
match:
Compound\LogicalAnd:
cro:
matchers:
Map\URI: { cro: true }
Map\Host: { '%site_domain%': true }
match: cro
Map\Host:
'%site_domain%': eng
请注意,我使用的是我在 app/config/parameters.yml
中自己定义的 %site_domain%
参数。您也可以这样做,或者您可以使用硬编码值。
缺点是,您需要将所有新的站点访问添加到 Compound\LogicalAnd
匹配器的列表中,但如果您有一个简单的站点,只有几个站点访问,我想应该没问题。