如何在不使用 Javascript 的情况下最好地重定向网页?
Posted
技术标签:
【中文标题】如何在不使用 Javascript 的情况下最好地重定向网页?【英文标题】:How best to redirect a webpage without using Javascript? 【发布时间】:2010-10-26 21:28:50 【问题描述】:我的默认页面中有一些脚本,可根据浏览器的语言将用户重定向到我网站的特定语言版本。我想添加一些东西来重定向那些没有启用 javascript 的用户。
目前我有以下:
<noscript>
<META HTTP-EQUIV=REFRESH CONTENT="1; URL=en/index.htm">.
</noscript>
但我读过这不是太明智,因为一些搜索引擎不赞成它。如何做到这一点并让搜索引擎满意?
【问题讨论】:
如果没有Javascript,你将如何确定浏览器语言? 您可以使用浏览器发送的http头来完成。即使浏览器躺在上面,javascript 也不会更安全,因为检查方式和某些历史原因可能会伪造结果 您可以向用户显示链接:单击此处;) 【参考方案1】:您也可以在服务器端使用 301 HTTP 状态码进行重定向。这是实现良好 SEO 的最佳方法。该示例在 C# 中,但每个平台都有自己的方法来向响应中添加标头:
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", "/newfolder/newfilelocation");
使用 301 状态码的原因是搜索引擎将新页面编入索引,因为它是“永久移动”而不是“临时移动”的 302。
【讨论】:
【参考方案2】:您为什么不在服务器端重定向,通过 302 HTTP 状态代码进行响应。我不知道你在服务器上有什么,但所有框架都支持它。
【讨论】:
【参考方案3】:您需要parse the Accept-Language
HTTP header。
【讨论】:
【参考方案4】:可以通过添加以下 http 标头使用服务器端语言来完成
Location: /en/index
将用户重定向到http://www.example.com/en/index
【讨论】:
您还需要返回 301(永久重定向)或 302(临时重定向)作为 HTTP 状态代码。仅此标头是不够的。 确实,我忘了!【参考方案5】:您应该使用 .htaccess 文件从标题中检测浏览器的语言(使用正则表达式),然后以这种方式重定向它们。这样做与客户端配置完全无关,搜索引擎会正确处理它。有大量关于具体如何实现这一点的信息。
【讨论】:
如果他使用的是 IIS?与 .htaccess 文件无关!以上是关于如何在不使用 Javascript 的情况下最好地重定向网页?的主要内容,如果未能解决你的问题,请参考以下文章
在不处理的情况下在线获取信用卡信息——如何最好地做到这一点?
视图如何在不使用依赖于框架的 intrinsicContentSize 的情况下根据其宽度的函数确定其高度?
在不使用 JavaScript 的情况下,如何在选择字段集中时使 Enter 键提交表单?