0

我需要重写这个网址:

domain.com/mali_oglasi/index/1(任何数字)

至:

domain.com/mali_oglasi

在我的 .htaccess 文件中,我有以下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

我怎样才能做到这一点?

4

2 回答 2

1

如果您唯一想要的是将控制器/方法映射为不同于默认行为,则可以使用route.php配置文件。请参阅此处的官方文档:http: //codeigniter.com/user_guide/general/routing.html

在你的情况下,你会有这样的事情:

$route['mali_oglasi/index/(:num)'] = 'mali_oglasi';

稍后在您的控制器中,您仍然可以使用以下方法获取原始数字:

$this->uri->rsegment(3);

代替 :

$this->uri->segment(3);

(请参阅此处的官方文档:http: //codeigniter.com/user_guide/libraries/uri.html

编辑:

实际上,如果您只是希望在需要添加参数时摆脱“索引”段,您可能想要与我的第一个答案相反:

$route['mali_oglasi/(:num)'] = 'mali_oglasi/index/$1';

使用该行,“www.yourdomain.com/mali_oglasi/1”形式的每个请求都将被 codeigniter 解释为“www.yourdomain.com/mali_oglasi/index/1”。这意味着控制器“mali_oglasi”的方法“index”将用于处理您的请求。

如果您需要检索数字,您想使用:

$this->uri->segment(3);

因此,如果您的客户应该直接访问 url “www.yourdomain.com/mali_oglasi/index/1”,您仍然会检索到好的 uri 段。($this->uri->segment(n);给你route.php重写uri后的第n段,$this->uri->rsegment(n)给你重写uri之前的第n段。)

于 2012-09-26T09:42:58.443 回答
0

我建议将用户重定向到新的 URL:

在您的控制器mali_oglasi中 >> 在函数中index

把下面的行

redirect('mali_oglasi');

例如

类 mali_oglasi 扩展 CI_Controller{

function Index($id){
    // Note : make sure you have loaded the url helper
    redirect('mali_oglasi');
}

}

注意:不要忘记加载url helper

注意: 将in$config['index_page'] = '';改为indexinapplication/config/config.php

于 2012-09-26T10:26:22.400 回答