如何将代码网址中的下划线替换为破折号?

2022-08-30 20:10:42

出于SEO的原因,我想知道将我的codeigniter url的下划线更改为破折号的最简单解决方案。

我的控制器如下所示:

public function request_guide() {
...Load view etc...
}

因此,要浏览到此页面,我必须转到:

www.domain.com/request_guide

但我想对seo更加友好,并使用破折号而不是下划线,就像这样:

www.domain.com/request-guide

我的印象是,codeigniter函数需要下划线(可能是错误的)。

在以前的项目中,我只是简单地使用了mod_rewrite但我相信这些操作可以使用路由来执行。

对我来说,用破折号替换下划线的URL的最简单方法是什么???


答案 1

这真的取决于你的意图。如果您只想更改一个页面,那么devrooms的解决方案确实是完美的:

$route['request-guide'] = "request_guide";

但是,如果你想让它成为你网站的默认行为,你应该像这样扩展你的核心路由器类(来源:[在CodeIgniter中使用连字符而不是下划线])

  1. 在“应用程序/核心”中创建一个新文件,并将其命名为“MY_Router.php”
  2. 在其中插入以下代码:

    <?php
    
    defined('BASEPATH') || exit('No direct script access allowed');
    
    class MY_Router extends CI_Router {
    
        function _set_request ($seg = array())
        {
            // The str_replace() below goes through all our segments
            // and replaces the hyphens with underscores making it
            // possible to use hyphens in controllers, folder names and
            // function names
            parent::_set_request(str_replace('-', '_', $seg));
        }
    
    }
    
    ?>
    

更新(2015 年 10 月 26 日):正如 @Thomas Wood 所提到的,在 CodeIgniter 3 中有更好的方法可以做到这一点:

$route['translate_uri_dashes'] = TRUE;

答案 2

在 中找到的路由配置

config/routes.php

是你在这里的朋友。

一个简单的

$route['request-guide'] = "request_guide" ;

将为您执行此操作。


推荐