如何在不使用 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 键提交表单?

如何在不刷新页面的情况下“连续”更改背景颜色[重复]

如何在不使用 JavaScript 的情况下一次单击打开两个页面?

如何在不使用jQuery的情况下获取元素的offset()。top值?