CodeIgniter路由无法正常工作,静态页面无法显示求助
别急,刚上手CodeIgniter踩路由和重写的坑太正常了!结合你给出的配置,我帮你梳理几个最可能出问题的地方:
1. 缺少URL重写的.htaccess文件(最常见原因)
你已经把$config['index_page'] = '';,这意味着要去掉URL里的index.php,但WAMP默认不会自动处理这个,必须添加.htaccess文件到项目根目录(和application、system文件夹同级),内容如下:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
添加后,再尝试访问http://mysite/pages,如果之前是因为重写问题导致的404,现在应该能正常加载了。
2. 路由规则不匹配动态页面参数
你的Pages控制器的index方法接受可选参数$page,但目前的路由$route['pages'] ='pages/index';只能匹配/pages这个固定URL。如果之后想访问比如/pages/about这类页面,需要补充路由规则:
$route['pages/(:any)'] = 'pages/index/$1';
这条规则会把URL中pages/后面的内容作为参数传给index方法的$page变量,这样就能动态加载对应的视图文件了。
3. 控制器文件名和类名的大小写规范
CodeIgniter对控制器文件名有规范:文件名必须首字母大写,比如你的控制器类是Pages,对应的文件必须命名为Pages.php(而不是pages.php),放在application/controllers/目录下。虽然Windows系统(WAMP)对大小写不敏感,但严格遵循规范能避免后续部署到Linux服务器时出问题。
4. 视图文件路径的拼写检查
再确认下你的视图文件路径是否完全正确:application/views/pages/index.php必须存在,文件名的拼写(包括大小写)要和控制器里调用的一致。比如如果视图文件是Index.php(大写I),在Windows下可能能加载,但最好统一用小写文件名避免隐患。
快速测试方法
如果还不确定问题在哪,可以先直接访问带index.php的URL:http://mysite/index.php/pages。如果这个能正常显示,那肯定是.htaccess的问题;如果还是404,再检查控制器文件名和视图路径。
内容的提问来源于stack exchange,提问作者Tim C

