How to replace underscores in codeigniter url with dashes? How to replace underscores in codeigniter url with dashes? codeigniter codeigniter

How to replace underscores in codeigniter url with dashes?


It really depends on your intention. If you just want to change only one page, then devrooms' solution is the perfect one indeed:

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

But if you want to make this your website's default behavior you should extend your core Router class like this (source: [Using hyphens instead of underscores in CodeIgniter])

  1. Make a new file in 'application/core' and name it 'MY_Router.php'
  2. Insert this code in it:

    <?phpdefined('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));    }}?>

UPDATE (Oct 26, 2015): There's a better way to do this in CodeIgniter 3, as @Thomas Wood mentioned:

$route['translate_uri_dashes'] = TRUE;


Code Ignitor 3 has this in built:

$route['translate_uri_dashes'] = FALSE;

Just change to TRUE and you can use either _ or -.

Documentation


The routes config found in

config/routes.php

is your friend here.

A simple

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

will do this for you.