2012-07-17 83 views
0

问:如何从旧的URL移动到codeigniter中的seo友好url?Codeigniter控制器htaccess重定向

例如: 我有一个名为library的codeigniter控制器。 的URL看起来像www.domain.com/library

这不是搜索引擎友好,我希望它看起来像www.domain.com/keyword-library 我该如何解决这个问题? .htaccess和路由是不够的,因为我需要旧的页面重定向到301与新的网址,所以搜索引擎接入。

回答

2

我使用的application/config/routes.php文件重新路由到新的URL查询到原控制器对象

$route['keyword-library/(:any)/(:any)/(:any)/(:any)/(:any)'] = "library/$1/$2/$3/$4/$5"; 
$route['keyword-library/(:any)/(:any)/(:any)/(:any)'] = "library/$1/$2/$3/$4"; 
$route['keyword-library/(:any)/(:any)/(:any)'] = "library/$1/$2/$3"; 
$route['keyword-library/(:any)/(:any)'] = "library/$1/$2"; 
$route['keyword-library/(:any)'] = "library/$1"; 
$route['keyword-library'] = "library"; 

然后在任何其他代码之前执行我添加此重新路由老的index.php文件页面到新页面。

$uri = $_SERVER['REQUEST_URI']; 
if(strpos($uri,'/library') === 0) 
    { 
    $expl = explode('/library',$uri); 
    //array_shift($expl); 
    $query = implode('',$expl); 
    $redirect= "https://".$_SERVER['HTTP_HOST'].'/orthomoleculaire-bibliotheek'.$query; 
    header("Status: 301 Moved Permanently"); 
    header("Location: $redirect"); 
    exit(0); 
    } 

我一直在使用这个的.htaccess尝试,但由于某些原因,我没能完成这项工作改道旧网址,因为变化的变量和可变长度有301新的网址。

如果有人知道更优雅的解决方案,请张贴它,因为我一直没有找到。

+0

是的,而不是使用Htaccess,最好是通过路由配置。 – hsuk 2012-07-17 09:47:50

+0

为什么不只是''route ['keyword-library /?'] ='library''和'$ route ['keyword-library /(.*)'] ='library/$ 1''而不是那个方法? – 2012-07-17 11:16:00

+0

@KusH,你可以看到我正在使用路由配置。问题是它不能解决搜索引擎的重定向301问题。它只是使现有页面的别名。谷歌讨厌双倍的内容。 – Tschallacka 2012-07-17 13:18:10