Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器:未路由请求的默认控制器_Php_Codeigniter - Fatal编程技术网

Php 代码点火器:未路由请求的默认控制器

Php 代码点火器:未路由请求的默认控制器,php,codeigniter,Php,Codeigniter,我有一个CI设置,URL可以调用一个特定的控制器,或者应该转发到一个不存在此类控制器的全面捕获控制器。有点像switch语句中的default。示例: domain/real-controller //<-- handled by controllers/Real-controller.php domain/another-real-controller //<-- controllers/Another-real-controller.php domain/fo

我有一个CI设置,URL可以调用一个特定的控制器,或者应该转发到一个不存在此类控制器的全面捕获控制器。有点像switch语句中的
default
。示例:

domain/real-controller          //<-- handled by controllers/Real-controller.php
domain/another-real-controller  //<-- controllers/Another-real-controller.php
domain/foobar                   //<-- no such controller; forwarded to a catch-all
因为这将(大概)阻止对合法控制器的请求

我大概可以用404处理做一些骇人的事情,但我想知道是否有更好的方法有人知道吗?

您可以使用
$route['(:any)]=“catchall\u controller”
,但必须将其放在routes.php文件的末尾:)

因此,在转到包含catchall_控制器的最后一行之前,可以完成其他所有路由器/控制器。

您可以使用
$route['(:any)]=“catchall_控制器”
,但必须将其放在routes.php文件的末尾:)


因此,在转到最后一行使用catchall_控制器之前,可以完成其他每一个路由器/控制器。

在codeigniter 2中,
(:any)
适用于所有参数,但在codeigniter 3中,这是更改的。将路线更改为:

$route['(.*)'] = 'catchall_controller';

在codeigniter 2中,
(:any)
适用于所有参数,但在codeigniter 3中,这一点有所改变。将路线更改为:

$route['(.*)'] = 'catchall_controller';

因为这个控制器是一个“包罗万象”的控制器,所以它基本上是在做404页面应该做的事情。在这种情况下,您可以在路线中执行此操作:

$route['default_controller'] = 'welcome';
$route['404_override'] = 'catchall_controller';
$route['translate_uri_dashes'] = TRUE;

因为这个控制器是一个“包罗万象”的控制器,所以它基本上是在做404页面应该做的事情。在这种情况下,您可以在路线中执行此操作:

$route['default_controller'] = 'welcome';
$route['404_override'] = 'catchall_controller';
$route['translate_uri_dashes'] = TRUE;


为什么不——
$route['default_controller']=catchall_controller'?用于确保转到
www.domain
加载主页。我想我可以设置一个catch-all默认控制器,如果没有传递参数,则加载主页。在这里大声想一想。你用的是什么版本的Codeigniter?所以如果你有这个“一网打尽”的控制器,你还需要404页面吗?如果它捕获所有请求,那么404不是已经过时了吗?为什么不-
$route['default\u controller']=catchall\u controller'?用于确保转到
www.domain
加载主页。我想我可以设置一个catch-all默认控制器,如果没有传递参数,则加载主页。在这里大声想一想。你用的是什么版本的Codeigniter?所以如果你有这个“一网打尽”的控制器,你还需要404页面吗?如果它能捕获所有请求,那么404不是过时了吗?我想这可能不是他想要的。重点不是创建一个完整的路由列表,而是一个“默认”或“全部”路由。谢谢您的帮助。不过,我同意评论者的看法。我认为这可能不是他想要的。重点不是创建一个完整的路由列表,而是一个“默认”或“全部”路由。谢谢您的帮助。不过,我同意评论者的看法。为什么这会起作用?提供一个解释。这与
$route['(:any)]
有何不同?在codeigniter 2中(:any)适用于所有参数,但在codeigniter 3中,这是一个更改,请参见此以通过周长感谢您的帮助。为什么会起作用?提供一个解释。这与
$route['(:any)]
有何不同?在codeigniter 2中(:any)适用于所有参数,但在codeigniter 3中,这是一个更改,请参见此以通过周长感谢您的帮助。但是,这仍然会发送404头吗?我绕过了这个问题,使用了一个“看门人”默认控制器,除非传递了令牌,否则它会跳转到主页+1,但是。除非您指定它,否则它不会发送404头。但是,它仍然会发送404头吗?我绕过了这个问题,使用了一个“看门人”默认控制器,除非传递了令牌,否则它会跳转到主页+1,但它不会发送404头,除非您指定它。