403禁止在Codeigniter中使用URI路由

时间:2012-01-05 10:07:38

标签: codeigniter

我正在尝试使用Codeigniter设置路由到我网站上的页面,但我只得到403.我无法理解为什么。

路由配置文件中的代码是:

$route['photo/(:num)'] = "viewphoto/view/$1";
$route['photo'] = 'photo';

$route['photos'] = "photospage/index";
$route['photos'] = 'photos';

$route['default_controller'] = 'homepage';
$route['homepage'] = 'homepage';

当访问mysite.com/photo/2(例如)时,它的工作正常,主页也是如此。但是当我访问mysite.com/photos时,我只收到403 Forbidden错误消息。

我无法解决这个问题,路由设置与mysite.com/photo/2路由设置完全相同。

它所指向的控制器称为照片页面,其中的功能称为索引。

如果我去mysite.com/photos/index,它可以工作......

非常感谢任何帮助:)

编辑:

将路线配置文件更改为以下内容,但是当我转到mysite.com/photos时它仍然无效。我将控制器功能更改为'view'而不是'index',但它仍然不起作用:(

$route['photos'] = "photos/view";
$route['photo/(:num)'] = "viewphoto/view/$1";
$route['default_controller'] = 'homepage';

主页和照片/ $ id仍然可以正常工作。

3 个答案:

答案 0 :(得分:4)

您的rewrite规则应为:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

您必须从index.php

中删除/application/config/config.php条目

验证是否设置正确 403 forbidden 错误可能是由于.htaccess重写错误造成的。

答案 1 :(得分:2)

好的,让我们逐一看一下这些(假设您的域名为'example.com',并且您通过'.htaccess'隐藏'index.php'):

$route['photo/(:num)'] = "viewphoto/view/$1";

这将获取这样的任何网址:http://example.com/photo/36并将其路由到/application/controllers/viewphoto控制器,然后调用view方法并将其作为参数传递36。


$route['photo'] = 'photo';

这将获取这样的任何网址:http://example.com/photo并将其路由到/application/controllers/photo控制器,并调用index方法,不带参数。


$route['photos'] = "photospage/index";

这将获取这样的任何网址:http://example.com/photos并将其路由到/application/controllers/photospage控制器,并调用index方法,不带参数。


$route['photos'] = 'photos';

这将获取这样的任何网址:http://example.com/photos并将其路由到/application/controllers/photos控制器,并调用index方法,不带参数。 此路由永远不会被调用,因为它会复制之前的路径


$route['default_controller'] = 'homepage';

这将获取到目前为止尚未捕获的任何URL并将其路由到/application/controllers/homepage控制器,并调用index方法,不带参数。


$route['homepage'] = 'homepage';

这将获取这样的任何网址:http://example.com/homepage并将其路由到/application/controllers/homepage控制器,并调用index方法,不带参数。

我的猜测是这与控制器中没有index方法有关。如果不是这样,那么我们需要查看.htaccess文件的内容。

答案 2 :(得分:0)

如果您的目录名称与引发403错误的路由相同,则可能会出现此问题。删除或重命名目录,路由将起作用。