You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.htaccess重定向带ID的旧新闻URL至新URL?含CodeIgniter路由

搞定CodeIgniter旧新闻URL到新URL的重定向

嘿,我来帮你解决这个URL重定向的问题!你的旧URL带新闻ID(比如http://example.com/mynew/35/this-is-the-title),新URL去掉了ID,要实现批量重定向,我们可以通过CodeIgniter的路由和重定向功能来搞定,下面给你两种可行的方案:

方案一:用控制器处理(更灵活,适合后续可能的扩展)

  1. 先修改routes.php的路由规则
    把这条规则加到你现有路由的最前面(记住路由是从上到下匹配的,旧规则得优先匹配):

    $route['mynew/(:num)/(:any)'] = 'news/redirect_old_url/$1/$2';
    

    这条规则会精准捕捉所有mynew/数字/标题格式的旧URL,把请求传给news控制器的redirect_old_url方法,同时带上ID和标题两个参数。

  2. 在News控制器里加个重定向方法
    打开你的News.php控制器,添上这段代码:

    public function redirect_old_url($id, $title) {
        // 拼接出新的URL地址
        $new_url = base_url('mynew/' . $title);
        // 用301永久重定向(对SEO友好,告诉搜索引擎更新索引)
        redirect($new_url, 'location', 301);
    }
    

    这里用301重定向非常关键,因为这是永久的URL变更,能把旧URL的搜索引擎权重转移到新URL上,不会影响你的网站排名。

方案二:直接用路由重定向(适合简单场景,CI 3.0.3+可用)

如果你的CodeIgniter版本是3.0.3及以上,不用写控制器方法,直接在路由里配置就行:

$route['mynew/(:num)/(:any)'] = redirect('mynew/$2', 'location', 301);

同样要注意,这条规则必须放在$route['mynew/(:any)']的前面,不然会先匹配到新的URL规则,旧规则就失效了。

几个重要的小提醒

  • 路由顺序不能乱:旧URL的匹配规则一定要放在新规则前面,不然CI会先匹配到新的,旧URL就无法被捕捉了。
  • 一定要用301重定向:别用302临时重定向,301是永久跳转,对SEO更友好,搜索引擎会更新它的索引记录。
  • 测试一下:配置完后,手动输几个旧格式的URL,看看是不是正确跳转到新地址了,顺便检查下浏览器的网络请求状态码是不是301。

内容的提问来源于stack exchange,提问作者Alfonso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:28:51