CI重写规则导致404错误,硬伤啊

   最近公司的新项目在做整合,几个频道原来是不同的域名不同的站点都是独立的文件夹,现在要公用Application目录和CI库目录等文件夹,为了便于管理与避免冲突,控制器controllers文件夹里各频道的控制器分别放在一个子目录里。为了让原来的访问地址一样有效,得重写.htaccess里的RewriteRule规则。

  原来的规则:RewriteRule ^(.*)$ /index.php/$1 [L]     #隐藏了index.php

  控制器转移到了user目录里,由于我想当然地在规则里直接加上了user:

  RewriteRule ^(.*)$ /index.php/user/$1 [L]

  可是访问时出现了404错误,访问/index.php/user/controller这样的网址又是正常的。

  经过解读CI代码,发现了造成这个问题的原因:非参数方式传递控制器名等信息时,获取URI数据是从当前链接获取的,而非重写后的,导致文件夹数据丢失。

  后经CI交流群Hex提醒,在config/routes.php里设置了路由,解决了:

$route['(S+)']="user/$1";

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注