我正在尝试使用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仍然可以正常工作。
答案 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错误的路由相同,则可能会出现此问题。删除或重命名目录,路由将起作用。