不同地区的锂电路线
Lithium routes with different locales
我在 Li3 中有一条 i18n 路由,如下所示:
Router::connect('/{:locale:[a-z]{2}/{:args}', [], [
'continue' => true,
'persist' => ['locale'],
]);
这样,当用户(或爬虫)使用语言前缀进入我的网站时,区域设置用于生成网站上的每个 link。
出于 SEO 目的,我需要在其他语言环境中生成 URL,例如:
GET /en/profile/john-doe
Canonical URL: https://www.example.com/en/profile/john-doe
Link hreflang for es: https://www.example.com/es/profile/john-doe
Link hreflang for pt: https://www.example.com/pt/profile/john-doe
我的货币方法是克隆当前请求,更改语言环境,从 persist
数组中删除 locale
,并使用 $request->to('url', ['absolute' => true]);
.
但我无法摆脱语言环境。
关于如何解决这个问题有什么建议吗?
我终于解决了扩展 HTML
助手 class:
use lithium\template\helper\Html as BaseHtml;
class Html extends BaseHtml
{
/**
* Returns href lang link for a locale for the current request.
*
* @param string $locale
* @return string <link />
*/
public function getHrefLinkForLocale($locale)
{
return $this->link(
'Canonical URL for ' . $locale,
compact('locale') + $this->getRequest()->params,
[
'absolute' => true,
'rel' => 'alternate',
'type' => 'alternate',
'hreflang' => $locale,
]
);
}
}
我在 Li3 中有一条 i18n 路由,如下所示:
Router::connect('/{:locale:[a-z]{2}/{:args}', [], [
'continue' => true,
'persist' => ['locale'],
]);
这样,当用户(或爬虫)使用语言前缀进入我的网站时,区域设置用于生成网站上的每个 link。
出于 SEO 目的,我需要在其他语言环境中生成 URL,例如:
GET /en/profile/john-doe
Canonical URL: https://www.example.com/en/profile/john-doe
Link hreflang for es: https://www.example.com/es/profile/john-doe
Link hreflang for pt: https://www.example.com/pt/profile/john-doe
我的货币方法是克隆当前请求,更改语言环境,从 persist
数组中删除 locale
,并使用 $request->to('url', ['absolute' => true]);
.
但我无法摆脱语言环境。
关于如何解决这个问题有什么建议吗?
我终于解决了扩展 HTML
助手 class:
use lithium\template\helper\Html as BaseHtml;
class Html extends BaseHtml
{
/**
* Returns href lang link for a locale for the current request.
*
* @param string $locale
* @return string <link />
*/
public function getHrefLinkForLocale($locale)
{
return $this->link(
'Canonical URL for ' . $locale,
compact('locale') + $this->getRequest()->params,
[
'absolute' => true,
'rel' => 'alternate',
'type' => 'alternate',
'hreflang' => $locale,
]
);
}
}