我有一个非常复杂的情况,当我需要静态本地化和动态本地化在我正在工作的项目。
我要本地化的是:
例如:
"domain.com/about“-用于英语本地化。 “domain.com/es-es/约”-用于西班牙语本地化。
这就是我现在的位置,而且还在起作用。
目前,区域性是在路由机制中提供和指定的(对于SEO最好),而不是存储在cookie或会话中。
RouteConfig.cs看起来是这样的:
// Localized Default:
routes.MapRoute(
name: "LocalizedDefault",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { culture = new CultureRouteConstraint() }
);
// Default:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { culture = "en-us", controller = "Home", action = "Index", id = UrlParameter.Optional }
);现在我有个问题.
基本上,我需要允许用户输入他们的概要文件的许多翻译,并为访问配置文件的用户选择正确的翻译。此外,如果用户访问用户没有为他的语言提供翻译的概要文件,我需要向他展示一个“默认”翻译,但是站点界面将保留在他的语言中。
所以,我的方法是:
对于动态页面,我认为我需要一个包含用户区域性的cookie的帮助,并消除URL中的{区域性}路由参数,当没有cookie时,站点界面定位将从cookie或浏览器(用户语言)中确定。并且内容本地化将由URL "{ content }“末尾的路由参数确定。
例如:
"domain.com/ user /username“-默认内容本地化(用户将设置为默认值的语言)。 "domain.com/user/username/en-us“-用于英语内容本地化。 “domain.com/user/username/es”-用于西班牙语内容本地化。
我得出以下结论:
·对于匿名用户=对于静态页面,本地化由URL中的{区域性}路由参数确定,而对于动态页,则消除{区域性}参数,从cookie中确定站点接口,URL末尾的{ content }参数代表内容本地化。
·对于经过身份验证的用户=所有页面(静态和动态),本地化仅由cookie决定,这使得一个简短友好的URL和SEO不受影响。
这种做法是否可以接受?
我不知道什么是最佳实践解决方案,以实现这一点,同时保持SEO,友好/容易的URL?
顺便说一句-我的重点是URL和SEO,数据库和其他关注是很好的表现。
谢谢!
发布于 2017-07-15 17:59:49
因为你是关心搜索引擎优化,曲奇是禁止在匿名页面。这些页面上的所有内容都应该通过URL来控制。
对于这种情况,我认为将{culture}和{content}参数都放入URL中是最直观的,但在相反的一端。
{culture}/{controller}/{action}/{content}通过精心编制的路由配置,可以使这两个参数在逻辑缺省情况下都是可选的。为了提高可读性,您可以考虑在最后一个参数之前添加一个静态/content/段,这将需要一个额外的路由来使两个段都是可选的。
当没有cookie时,站点界面本地化将从cookie或浏览器(用户语言)中确定。
这很好(假设您使用的是URL,而不是上面提到的可选值的cookie )。这为用户通过URL覆盖浏览器(用户语言)提供了一种简单的方式。因为(用户语言)是一个可以被防火墙修改的标题,这可能不是用户的真正偏好,如果您不提供一种方法来覆盖它是一个可怕的UX。我还建议让用户语言覆盖用户语言在用户界面上可见(通过链接到包含区域性的URL ),而不仅仅是通过URL。
请记住,搜索引擎可能不会提供这个标题,所以当它不可用时,您也应该有一个后备计划(默认区域性)。始终将URL视为提供区域性的首选,而忽略(用户语言)标头。
对于只有通过身份验证的用户才能访问的URL,您有更大的灵活性,因此在这里使用cookie是可以的。尽管,如果站点的其他部分将区域性放置在URL中,那么使用URL导航的高级用户可能会感到有些奇怪。
就我个人而言,我的目标是与站点的其他部分保持一致,而不是通过身份验证的页面使用“尼斯短URL”,因为它通常只是匿名页面,其中“好短URL”对于SEO和共享目的都是重要的。但是,如果您期望有许多强大的用户在浏览器中编辑URL,这可能是值得考虑的。
https://stackoverflow.com/questions/45112750
复制相似问题