使用base_url进行Codeigniter路由

时间:2015-08-06 00:58:28

标签: codeigniter codeigniter-routing

我在Codeigniter中使用Pagination库,它创建的链接正是我正在寻找的。当我点击链接转到下一页时,我得到了404。

我的基本网址(索引页)是:http://localhost/foo

我的路由是:

$route['default_controller'] = 'main';
$route['page/(:num)'] = 'main/page/$1';

我希望能够访问网址:http://localhost/foo/page/2以获取第二页。 main是控制器。 pagemain内的一个函数。

可以在网址http://localhost/foo/index.php/main/page/2中输入并转到正确的网页,但我希望拥有index.php/main网址。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

你没有做错任何事。如果要从url中删除index.php:

application / config / config.php 文件中留空 $ config ['index_page'] attibute,并确保您的.htaccess包含< / p>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

还要确保apache服务器已启用mod_rewrite,并且在apache AllowOverride属性的配置中已将其设置为All

答案 1 :(得分:0)

在你的控制器中(在分页代码中)$config['base_url']应该是

$config['base_url'] = base_url() . 'foo/page/';

在routes.php中

$route['page/(:num)'] = 'main/page/$1';
$route['page'] = 'main/page';//add this line

.htaccess,(放置在应用程序文件夹外)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>
  

注意:base_url()

中使用config/autoload.php
$autoload['helper'] = array('url');//url
     

并在config/config.php中,(更改此内容)

$config['base_url']   = '';
$config['index_page'] = '';