2

我正在重建一个旧网站,它有很多文件,已经移动到服务器上更合适的目录中。很明显,Google 拥有的这些页面的所有 url 都将返回 404,因为它们不再存在。但我希望 Google(和其他人)知道这些页面仍然存在,以及它们存在于哪个目录中。

但是我们如何为许多不同的页面做到这一点呢?

4

2 回答 2

2

您必须将旧链接重定向到新域。这就是你可以做到的。

使用 php:

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

使用 asp.net:

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
 Response.Status = "301 Moved Permanently";
 Response.AddHeader("Location","http://www.new-url.com");
 }
</script> 

使用 ROR:

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end 

使用 htaccess

使用以下代码创建一个 .htaccess 文件,它将确保您旧域的所有目录和页面都将正确重定向到您的新域。.htaccess 文件需要放在你旧网站的根目录下(即你的索引文件所在的同一个目录)

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] 

请将上述代码中的 www.newdomain.com 替换为您的实际域名。

除了重定向之外,我建议您联系每个反向链接站点以修改其反向链接以指向您的新网站。

注意:这种 .htaccess 重定向方法仅适用于启用了 Apache Mod-Rewrite 模块的 Linux 服务器。

更多方法请参考这里

于 2012-07-26T10:06:45.060 回答
1

您是否正在运行任何类型的服务器端请求处理(即 php、asp(.net)、java、ruby 等)?如果是这样,您可以制作一个查找字典,其中包含旧位置及其新的等价物。检查所有传入请求是否在该字典中并返回适当的响应。

ASP.NET 中的示例(这在 Globabl.asax 中):

Private redirectedResourceList As New Dictionary(Of String, String) From {
    {"/files/myfile.txt", "/newfiles/myfile.txt"},
    {"/files/myfile2.txt", "/newfiles/myfile2.txt"}
}

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    If redirectedResourceList.ContainsKey(HttpContext.Current.Request.Path) Then
        Response.StatusCode = 301
        Response.AddHeader("Location", redirectedResourceList(HttpContext.Current.Request.Path))
        Response.End()
    End If
End Sub
于 2012-07-26T10:17:16.640 回答