【问题标题】:Codeigniter routes not working sometimesCodeigniter 路由有时不起作用
【发布时间】:2011-12-09 19:22:42
【问题描述】:

我有一个小问题。我正在使用 Codeigniter 2.1.0,并且我的 routes.php 中有以下代码。

$route['default_controller'] = "photo";
$route['404_override'] = 'error';

$route['photo/:num'] = 'photo/index/$1';
$route['people/:num'] = 'people/index/$1'; 

奇怪的是,有时当我转到 http://www.myurl.com/photo/1 时它会起作用,而有时它会将我重定向到我的错误页面。

有人知道我的路线有什么问题吗?

已经提前谢谢了!

鲍勃

【问题讨论】:

  • 您是否尝试将(:num) 括在括号中?如果您在路由中使用$1,则可能需要它。
  • 曾经有这个,但因为我在有 (:num) 时也有错误,所以我删除了括号。
  • 您有 .htaccess 文件可以从您的 URL 中删除 index.php,对吗?如果是这样,您不需要自定义路线。 photo/1 自动转到 photo/index/1。

标签: php codeigniter routes


【解决方案1】:

这是不对的

$route['photo/(:num)'] = 'photo/index/$1';
$route['people/(:num)'] = 'people/index/$1'; 

你必须写这条路线

$route['photo/(:num)'] = 'photo/$1';
$route['people/(:num)'] = 'people/$1'; 

这样只允许数字。

索引不是必需的。

【讨论】:

    【解决方案2】:

    不确定是否是这种情况,但您可能希望在通配符周围加上括号:

    $route['default_controller'] = "photo";
    $route['404_override'] = 'error';
    
    $route['photo/(:num)'] = 'photo/index/$1';
    $route['people/(:num)'] = 'people/index/$1'; 
    

    【讨论】:

    • 曾经有这个,但因为我在有 (:num) 时也有错误,所以我删除了括号。
    【解决方案3】:

    在 Codeigniter 中使用路由时,不要忘记 .httacess 文件

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

    并删除co​​nfig.php文件$config['index_page'] = '';中的index.php

    【讨论】:

      猜你喜欢
      • 2011-11-07
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多