1

标题似乎很愚蠢。但我遇到了问题,现在我可以输入http://ci.tao2tw.com,然后路由到我的 index.php/entry 函数但是当我输入http://ci.tao2tw.com/order时,我想要路由到另一个控制器 order.php ,但是它不起作用!我的设置有什么问题吗?

现在,我无法在 http://ci.tao2tw.com/order/test的订单控制器下运行测试功能。相反,我应该输入htpp ://ci.tao2tw.com/index.php /order/test 我不知道??

先谢谢大家了~ 在此处输入图像描述 在此处输入图像描述

在 routes.php 中

$route['default_controller'] = "index/entry";
$route['order'] = "order"; 
$route['404_override'] = '';

在 config.php 中

$config['base_url'] = 'http://ci.tao2tw.com/';
$config['index_page'] = '';

在控制器/index.php 中(它工作正常)

class Index extends CI_Controller {

    public function __construct() // to remember use public
    {
        parent::__construct(); 
        $this->load->helper('url');
        //anchor(); 
    }
    public function entry() //just show index
    {
        $this->load->view('index_view',$data);      

    }

}

在控制器/order.php 中(没有工作)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Order extends CI_Controller {

    public function __construct() // to remember use public
    {
        parent::__construct(); 
        $this->load->helper('url');

    }
    public function fill($action) // 顯示填寫表單
    {
        echo "test";
    }
   //http://codeigniter.com/user_guide/libraries/uri.html
    public function order($action)
    {
        echo $action;
    }
}

?>

.htaccess 文件

RewriteEngine on
RewriteCond $1 !^(index\.php|css|flash|images|img|includes|js|language|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
~
4

4 回答 4

4

必须在您的index.php文件之后在 CI 中调用每个控制器。

因此,如果您不使用 .htaccess 文件,您到订单控制器的链接如下:

http://ci.tao2tw.com/index.php/order/

.htaccess 允许跳过 index.php 文件

 RewriteRule ^(.*)$ index.php/$1 [L]

您可以使用以下命令调用您的控制器:

http://ci.tao2tw.com/order

然后,如果你想在你的订单控制器中调用一个方法,你的 url 是:

于 2012-08-25T10:43:28.960 回答
2

对不起,各位。我发现解决方案太愚蠢了。我使用 apache 2 并拥有一个虚拟主机,路径为:“/etc/apache2/sites-enabled/ci.tao2tw.com”

我必须改变AllowOverride None to AllowOverride All

于 2012-08-25T14:26:48.047 回答
0

是的,你需要像这样路由它:

$route['order'] = "order/order"; 

原因是在您将 url 路由到模型的方法之前,它无法知道您要执行什么功能

现在,它将调用您的 Order 模块的 order() 方法

于 2012-08-25T10:00:21.447 回答
0

我认为您的 .htaccess 文件有问题。您的应用程序是否位于子文件夹中?

RewriteEngine on
RewriteBase /path/to/app  [add this if your application is under a sub folder]

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

<IfModule mod_php5.c>
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_php5.c>
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
于 2012-08-25T12:49:22.007 回答