0

问题:如何在 codeigniter 中从旧网址转移到对 seo 友好的网址?

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

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

4

1 回答 1

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 的新网址。

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

于 2012-07-17T09:27:48.783 回答