CodeIgniter3点击按钮跳转页面出现404错误求助
看起来你遇到的是CodeIgniter路由和URL规则的典型问题,我来帮你一步步排查:
1. 确认URL的正确结构
CodeIgniter的默认URL规则是 base_url/控制器名/方法名。如果你的reseller()方法是写在默认控制器(比如Welcome.php)里的,那你按钮的链接应该写成:
<a href="<?php echo base_url('welcome/reseller'); ?>">Find Out More</a>
你之前直接写base_url()reseller,CodeIgniter会尝试去找一个名为Reseller.php的控制器,并调用它的index()方法,但你并没有这个控制器,所以会返回404。
2. 如果你想直接用base_url/reseller访问(无需控制器前缀)
可以通过配置路由来实现:
打开application/config/routes.php,添加一行:
$route['reseller'] = '你的控制器名/reseller';
比如你的方法在Welcome.php控制器里,就写:
$route['reseller'] = 'welcome/reseller';
这样访问http://localhost/xxxxx/reseller就会正确路由到对应的方法。
3. 检查控制器的命名规范(针对CodeIgniter 3)
如果你确实想创建一个Reseller控制器,请确保:
- 控制器文件名是首字母大写的:
Reseller.php - 控制器类名也是首字母大写,并且继承
CI_Controller:
class Reseller extends CI_Controller { public function index() { // 如果你想访问/reseller直接显示页面,方法名应该是index $this->load->view('v_reseller'); } }
(注意:如果是这种情况,你的原方法名reseller()应该改成index(),否则访问/reseller还是会找index方法)
4. 检查.htaccess配置(确保URL中无需index.php)
如果你没有配置.htaccess来移除URL中的index.php,那正确的访问URL应该是http://localhost/xxxxx/index.php/reseller。如果想去掉index.php,在项目根目录创建.htaccess文件,内容如下:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
同时确保application/config/config.php里的$config['index_page']设置为空:
$config['index_page'] = '';
试试上面的步骤,应该能解决你的404问题。
内容的提问来源于stack exchange,提问作者dhees

