Cakephp,将旧的谷歌搜索结果路由到新的主页

时间:2010-04-21 15:11:48

标签: cakephp redirect seo search-engine routes

我为公司创建了一个新网站,我希望重定向所有以前的搜索引擎结果。由于有很多页面,其中大多数使用id我想使用通用的东西而不是重新路由所有旧页面。

我的第一个想法就是这样做:

Router::connect('/*', array('controller' => 'pages', 'action' => 'display', 'home'));

并将其放在routes.php文件 [因为它的优先级] 的最后,这样所有未通过以前路由操作验证的请求将返回true,并重定向到主页。

然而这不起作用。

当我在路由器上使用不同的路径时,它会成功重定向。例如,如果我给它:

Router::connect('/*', array('controller' => 'projects', 'action' => 'browser'));

它工作正常。当使用的控制器是页面,动作显示等时出现问题。

我正在粘贴我的routes.php文件 [因为它很小] 希望有人能给我一个提示:

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

    Router::connect('/company/*', array('controller' => 'articles', 'action' => 'view'));

    Router::connect('/contact/*', array('controller' => 'contacts', 'action' => 'view'));

    Router::connect('/lang/*', array('controller' => 'p28n', 'action' => 'change'));

    Router::connect('/eng/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'eng'));

    Router::connect('/gre/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'gre'));


    Router::parseExtensions('xml');

2 个答案:

答案 0 :(得分:3)

我建议您根据需要使用.htaccess文件来重定向页面,而不是尝试处理cakePHP路由文件中的所有内容。

上面的内容不会转移排名,因为据我所知,在您提出的任何基于routes.php的解决方案中都没有输出301重定向。

答案 1 :(得分:2)

更大的问题是路由没有重定向,它会将URL与响应连接起来。换句话说,它确保您现在无效的网址仍然会产生有效页面。这与你想要实现的完全相反。

您想告诉访问者以前的网址已经不存在了。您可以通过在这种情况下发出适当的HTTP响应代码301 Moved Permanently来执行此操作。如果不这样做,URL仍将对搜索引擎有效,并且不会更新其索引。

您必须将所有无效的URL通过路由连接到某个控制器操作,该操作将发出$this->redirect('...', 301),或者您可以使用某些.htaccess规则进行重定向。使用哪一个取决于重定向的复杂性,但您可能能够使用简单的.htaccess mod_rewrite规则。

SO上有足够的示例:https://stackoverflow.com/search?q=htaccess+301+redirect