【发布时间】:2014-02-01 07:33:49
【问题描述】:
我们从旧的经典 asp 网站(也是 3 种语言)创建了 FR、ES、EN 的多语言网站。默认情况下,在旧站点中,英文“en”未嵌入 URL。但在我们新的 sitecore 网站中,我有语言 Embedding="Always"。
因此,当我们从旧网站重定向到新网站以在 Google 中进行 301 重定向时,如果我用法语打开新网站并从旧网站重定向是英文(这意味着在 url 中没有语言,即“en ") 链接将指向法语版本)。
那么我如何在 url 中添加“en”。
HttpContext.Current.Request.RawUrl
我可以使用上面的方法来获取原始 url,但我不知道如何在浏览器 url 中显示“en”。
旧网站链接:
www.abc.com/xyz.asp,
www.abc.com/fr/xyz.asp,
www.abc.com/es/xyz.asp
新网站链接:
www.abc.com/en/xyz.aspx,
www.abc.com/fr/xyz.aspx,
www.abc.com/es/xyz.aspx
谢谢
【问题讨论】:
-
没有办法实现你想要的开箱即用,你唯一能做的就是检查请求 URL 是否包含语言,如果不包含则 302 重定向使用包含的语言回到自身(但您现在有 3 次跳转才能访问内容)。
-
你能建议任何自定义标准来构建这个
-
您可以为此使用 IIS URL 重写功能。然后定义一个模式,将所有请求(例如 /*.asp)重定向到新的 URL,例如 /en/*.aspx。仅当路径完全相同并且所有旧路径都存在于新站点中时才有效。
-
鉴于额外的信息,Ruud 对 IIS URL Rewrite 模块的建议是实现这一目标的最简单方法
-
如果你不想使用 IIS Rewrite,你可以试试这个:stackoverflow.com/a/21136149/661447