2010-05-20 4 views
0

это мой контроллер в CIправило перезаписи для CodeIgniter

class Welcome extends Controller { 

function Welcome() 
{ 
    parent::Controller(); 
    } 

function index() 
{ 

} 
function bil($model='') 
{ } 

Я хочу сделать рерайт, так что

http://example.com/index.php/welcome/bil/model 

становится

http://example.com/model 

в моем HTAccess у меня есть

RewriteBase/
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/welcome/$1 [L] 
#RewriteRule ^(.*)$ /index.php/welcome/bil/$1 [L] 

я подумал, что это должно быть так же просто, как удаление /index.php/welcome/ часть , но когда я раскомментировать последнюю строку это получить 500 внутренняя ошибка сервера

ответ

0

Вы хотите использовать mod_rewrite, чтобы удалить ваш index.php, как у вас есть, но используйте CodeIgniter's routing features для перенаправления example.com/model до example.com/welcome/bil/model.

В файле конфигурации routes.php, вы можете определить новый маршрут, как это:

// a URL with anything after example.com 
// will get remapped to the "welcome" class and the "bil" function, 
// passing the match as a variable 
$route['(:any)'] = "welcome/bil/$1"; 

Итак, набрав example.com/abc123 будет эквивалентно example.com/welcome/bil/abc123.

Обратите внимание, что в URL разрешены только символы, разрешенные $config['permitted_uri_chars'] (которые находятся в вашем файле config.php).

Надеюсь, что это поможет!

Смежные вопросы