404 to 301 - Fixing old links

时间:2012-11-05 作者:Jeremy

我目前更新了一个网站,并对其进行了许多改进。旧站点运行了3个不同的系统,在webroot中有wordpress(和其他系统)。我已经将wordpress移动到了一个子目录(wordpress),并且我还更新了我的博客文章,以blog/作为前缀。页面和首页没有以blog/作为前缀。

我遇到的问题是,我想优雅地告诉谷歌和其他搜索引擎,这些帖子现在的前缀是/blog/。

在我意识到wordpress抛出404头之前,我在404页面中使用了以下代码。显然,这不是实现此修复的正确方法。

// Check if old site URL and redirect if so
if (substr($s, 0, 8) != \'reviews/\') {
    if (substr($s, 0, 5) != \'blog/\' && substr($s, 0, 10) != \'wordpress/\' ) {
        // Force our 301 redirect so we can keep the new URI: /blog/
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: /blog/{$s}");
        exit();
    }
}
我需要做的是找出wordpress何时知道这是一个404,看看它是否与我的检查相匹配(目前在上面的代码片段中),如果匹配发生,则强制301重定向以更新爬虫程序。

我不确定init上是否有这些信息,因为这是我要测试的下一步。

我试着玩template_redirectredirect_canonical 但它们似乎不是正确的附加方法。

在此方面的任何帮助都将不胜感激。我仍在努力寻找解决方案,并将在找到解决方案后发回。

提前谢谢。

1 个回复
最合适的回答,由SO网友:Z. Zlatev 整理而成

如果您打算根据template tags 你应该抓住wp 行动template_redirect 也足够了,但是wp 是更早的。这就是WP处理404本身的时候。要执行301重定向,请使用status_header( 301 );, wp_safe_redirect(); 紧接着exit;

你可以使用a plugin 帮你处理这些。如果你不是那么专业,设置起来就有点棘手。祝你好运

结束

相关推荐

Wordpress redirect on login

我已将我的网站下载到生产环境中。我已将live site和production site设置为使用相同的DB。当我登录到管理面板时,我会被重定向到实时站点。我知道wordpress在DB中存储URL,所以我想修改(硬代码)我的生产站点,而不是重定向到任何地方。地点和方式?编辑:我在这里找到了这个特定问题的解决方案http://www.davidpaulellenwood.com/expression/267/但当一个问题被解决时,出现了两个新的问题,正如下面所讨论的,这是不值得的。