如何在不使用Javascript的情况下重定向网页?
我的默认页面中有一些脚本,可以根据浏览器的语言将用户重定向到网站的特定语言版本。我想添加一些东西,重定向那些没有启用Javascript的用户 目前我有以下几点:如何在不使用Javascript的情况下重定向网页?,javascript,html,http-status-code-301,http-status-code-302,Javascript,Html,Http Status Code 301,Http Status Code 302,我的默认页面中有一些脚本,可以根据浏览器的语言将用户重定向到网站的特定语言版本。我想添加一些东西,重定向那些没有启用Javascript的用户 目前我有以下几点: <noscript> <META HTTP-EQUIV=REFRESH CONTENT="1; URL=en/index.htm">. </noscript> . 但我读到这并不太明智,因为一些搜索引擎对此表示不满。如何做到这一点并让搜索引擎满意?您应该使用.htaccess文件从标题中检
<noscript>
<META HTTP-EQUIV=REFRESH CONTENT="1; URL=en/index.htm">.
</noscript>
.
但我读到这并不太明智,因为一些搜索引擎对此表示不满。如何做到这一点并让搜索引擎满意?您应该使用.htaccess文件从标题中检测浏览器的语言(使用正则表达式),然后以这种方式重定向它们。这样做是完全不可知的客户端配置和搜索引擎将妥善处理它。关于如何实现这一点,有大量的信息。可以通过添加以下http头使用服务器端语言来实现
Location: /en/index
将用户重定向到您需要的位置。为什么不在服务器端重定向,并使用302 HTTP状态码进行响应。我不知道服务器上有什么,但所有的框架都支持它。您也可以使用301 HTTP状态代码在服务器端重定向。这是最好的方式做它的好搜索引擎优化。示例在C#中,但每个平台都有自己的方法向响应添加标题:
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", "/newfolder/newfilelocation");
使用301状态代码的原因是,搜索引擎对新页面进行索引,因为它是“永久移动”的,而不是“临时移动”的302。如果没有Javascript,您将如何确定浏览器语言?您可以使用浏览器发送的http头来确定。即使浏览器位于javascript上,javascript也不会更安全,因为检查的方式以及出于某些历史原因,结果可能是伪造的。您可以向用户显示一个链接:单击此处;)您还需要返回301(永久重定向)或302(临时重定向)作为HTTP状态代码。单凭这个标题是不够的。事实上,我忘了提它了!如果他在使用IIS呢?与.htaccess文件无关!