将301重定向页面中的HTML放入文档中是否会执行与真正的301重定向相同的功能?


15

在网络调试器中,301重定向页面的html显示为:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.website.com/webpage.htm">here</a>.</p>
</body></html>

我必须在没有服务器支持的情况下重定向html页面。如果我用上面的代码替换html页面,是否与在apache的.htaccess中编写301重定向的工作方式相同?我在google上进行了查询,但是谈论301重定向的网站并未涵盖用于重定向html页面的此选项。

Answers:


18

理想情况下,您将发送301 HTTP响应状态代码。如果您不能执行此操作,则立即执行的元刷新也将起作用,并且取决于搜索引擎,该刷新将被视为301或302重定向

<meta http-equiv="refresh" content="0;url=http://example.com/new.html">

刷新率必须为零,才能将其视为30倍重定向。


谢谢,那篇文章很好地阐明了这一过程。我上面的html示例中的0延迟元刷新=穷人的301。–
JMC

10

不,仅用示例替换HTML不会达到您想要的效果。它只会向用户显示该页面,因为Apache会同时发送“ 200”状态代码。用户将能够单击该链接来找到页面,但是该页面不会自动发生,并且爬虫将不知道您要实现资源的永久重定向。

您将需要在.htaccess或您的Apache conf文件中使用正确的Redirect或_mod_rewrite_指令。

另外,如果您实际上正在使用PHP或类似的东西,则可以将返回码设置为301,输出一个Location响应标头,然后您的基于页面的解决方案就可以使用了。在PHP中,它看起来像这样:

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );

+1关于200状态代码的要点。没想到。不幸的是,这是一个IIS服务器,我没有比ftp更深入的访问。这些页面是.html,因此不会处理asp重定向。
JMC

在那种情况下,约翰·康德(John Conde)的答案是最好的-我忘记了元刷新等效性。
Hissohathair

3

与Hissohathair达成协议,因为您的方法实际上不会重定向。用户可能知道单击链接,但是原始页面仍将返回正常的“ 200”状态代码,并继续显示在搜索结果中(可能不是您想要的那样)。

为了维持网页排名,301状态代码非常重要。添加元刷新标签也是一个不错的选择,并且在大多数情况下可能会有所帮助(根据John的回答),但是您可能无法保证搜索引擎将来会接受它作为301重定向。为确保发送301状态代码,最好的选择是将适当的重定向添加到.htaccess(或Apache conf文件)中。

编辑:

=======================

对于IIS7网站,只要安装了IIS URL重写模块,就可以在web.config中为该站点创建重定向规则。这些规则也适用于.html文件。更多信息在这里:

http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/

=======================

如果您的Web主机不具有.htaccess / mod_rewrite功能,则另一种选择可能是更改您正在使用的Web主机,以便在其中设置服务器端重定向。只要正确移动了网站,它对您的用户就应该是无缝的。如果维持页面排名至关重要,则这种方法仅适用于极端情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.