Не уверен, что это вообще должно быть в вашем config/routes.php
: почему бы вам просто не создать контроллер, который берет имя и выполняет поиск?
РЕДАКТИРОВАТЬ: я забираю его обратно.Это на самом деле довольно болезненно, особенно потому, что вы хотите, чтобы он находился в корне домена (то есть было бы легко сделать example.com / p / {username} , но example.com/ enjusername…**************.
Самый простой способ сделать это - использовать способность CodeIgniter 2.0 + переопределить обработчик 404 и функцию _remap
.Сначала сделайте это в файле config / rout.php :
$route['404_override'] = 'notfound';
Затем создайте контроллер:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class NotFound extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function _remap($method)
{
if($this->uri->total_segments() == 1){
// try it out
$this->profile();
}else{
show_404($this->uri->uri_string());
}
}
function profile()
{
echo "Showing profile for [" . $this->uri->segment(1) . "]";
}
}
Вы должны реализовать представление дляСтраница 404, поскольку это переопределяет ее, но сюда поступают любые запросы, которые не отображаются на существующий контроллер, и вы можете отправлять их по своему усмотрению, включая преобразование имени в идентификатор базы данных.
Дайте мне знать, еслиэто работает для вас.