Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用Javascript的情况下重定向网页?_Javascript_Html_Http Status Code 301_Http Status Code 302 - Fatal编程技术网

如何在不使用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文件从标题中检

我的默认页面中有一些脚本,可以根据浏览器的语言将用户重定向到网站的特定语言版本。我想添加一些东西,重定向那些没有启用Javascript的用户

目前我有以下几点:

<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文件无关!