【问题标题】:Codeigniter controller htaccess redirectCodeigniter 控制器 htaccess 重定向
【发布时间】:2012-07-16 04:56:17
【问题描述】:

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

示例: 我有一个名为 library 的 codeigniter 控制器。 该 URL 类似于 www.domain.com/library

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

【问题讨论】:

    标签: .htaccess codeigniter routing seo


    【解决方案1】:

    我使用 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 将旧网址重新路由到新网址。

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

    【讨论】:

    • 是的,与其使用Htaccess,不如通过路由配置。
    • 为什么不直接使用$route['keyword-library/?'] = 'library'$route['keyword-library/(.*)'] = 'library/$1' 而不是那种方法?
    • @KusH 如您所见,我正在使用路由配置。问题是它不能解决搜索引擎的重定向 301 问题。它只是使现有页面的别名。谷歌讨厌双重内容。
    • @RobinCastlin Ha,因为该方法不在 codeigniter 路由的文档中……它只显示了 $1 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多