I\'ve written this in the CodeIgniter\'s routers.
$route[\'companyname\'] = \"/profile/1\";
This is working fine but when I type \"CompanyN
Uhm, well, an dirty but straight to the point way would be to make a small hack to the core Uri class. Open the uri.php
file inside system/core/
, scroll to line 269 where you have the method _explode_segments()
and make them lowercase. Bad method, but should work.
function _explode_segments()
{
foreach (explode("/", preg_replace("|/*(.+?)/*$|", "\\1", $this->uri_string)) as $val)
{
// Filter segments for security
$val = trim($this->_filter_uri($val));
if ($val != '')
{
// $this->segments[] = $val; // <--- ORIGINAL
$this->segments[] = strtolower($val); // <--- CHANGED
}
}
}
Just consider that if you upgrade your install this changes will be overwritten, but they're so small anyway. Alternatively, you might go for a pre_system hook, but I think it would be much more difficult
Also, in routes you should not use leading or trailing slashes, so it must be
$route['companyname'] = "profile/1";
Maybe you can use strtolower in your _remap function. It isn't sure that works, it was just an idea ;)
IN Directory system/core/uri.php
search about
$this->_parse_request_uri()
you will find 2 replace them with
strtolower($this->_parse_request_uri())
The easiest way I could think of is to enforce lowercase urls with mod_rewrite (if you're using apache...)
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
Source: http://www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/
Just add expression "(?i)"
Here example:
$route['(?i)companyname'] = "/profile/1";
Use Router:
$urix = substr(strtolower($_SERVER['REQUEST_URI']), 1);
$route["(?i)$urix"] = $urix;
Solution for all Case Insensitive Routings..