0

我正在尝试为我的 CodeIgniter 站点创建自定义路由。即使是最基本的路线也行不通。例如,我将欢迎控制器映射到“测试”,而我身上只有 404。我在启用了 mod_rewrite 的 MAMP 上运行。

我在 config.php 中有 index.php 行为空..

$config['index_page'] = '';

这是我的 .htacess 文件..

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

这是我的路线..

$route['welcome'] = 'test';
4

3 回答 3

0

几件事:

  1. CI 中的路由是级联的,它们从上到下进行评估,并且路由器在第一次匹配时停止。然后,确保将任何自定义路由放置在 vanilla 发行版中的 2 个默认路由之下:

    $route['default_controller'] = "welcome";
    $route['404_override'] = '';
    // custom routes here
    $route['welcome'] = "welcome/test";
    
  2. 如果你有一个名为“welcome”(默认)的控制器,并且你想调用一个名为“test”的方法,你需要一个类似的路由

    $route['welcome'] = "welcome/test"
    

    可通过 URL http://www.yourdomain.com/welcome 访问 (如果未指定路由,您将像http://www.yourdomain.com/welcome/test一样访问它)

通常,控制器有一个 index 方法,当没有提供其他方法时会自动调用该方法。到目前为止,您创建的路由不起作用,因为它正在调用index()“测试”控制器的方法,而该方法可能不存在。

一个建议:如果您将“欢迎”控制器保持为默认控制器,并且您想调用像http://www.yourdomain.com/test这样的 url 您需要一个test()方法并且您的路由必须是

$route['test'] = "welcome/test";
于 2013-06-24T21:38:40.467 回答
0

在路由中,数组包含要匹配的URI ,而数组包含应该重新路由到的目标。

-- CI 文档

您的物理控制器名称是welcome。因此,如果您希望将包含test第一段中的单词的 URL 重新映射到welcome该类,您应该这样做:

$route['test'] = "welcome/METHOD";

METHOD类的方法在哪里welcome

注意:如果类/方法是welcome/index,则不需要附加/index.

于 2013-06-24T21:47:10.700 回答
0

如果我没看错,那条路线会尝试将控制器“欢迎”重定向到控制器“测试”。如果您有一个名为“test”的控制器和一个名为“index”的函数,则可以路由以下内容:

route['welcome/index'] = 'test/index';

那是你想要做的吗?

于 2013-06-24T21:28:33.947 回答