Code Igniter总是希望index.php访问控制器

时间:2016-02-09 06:46:07

标签: javascript php apache .htaccess codeigniter

我正在使用codeigniter开发一个简单的php项目。 我的htaccess看起来像这样

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

我的基本网址是

$config['base_url'] = 'http://localhost/Achalaweerasooriya.github.io';

我的索引页面是

$config['index_page'] ="";

我的主控制器类是LoginController。

当我运行项目时,它调用登录控制器,网址为

http://localhost/Achalaweerasooriya.github.io/index.php

显示登录表单。当我输入登录详细信息并单击登录时,它应验证用户。我为登录按钮提供的href是

href="<?php echo base_url('');?>LoginController/validate"

然后网址显示为

"http://localhost/Achalaweerasooriya.github.io/LoginController/validate"

这在逻辑上是正确的。

但是当我点击具有正确用户名和密码的登录按钮时,会生成404错误,说明找不到对象 错误说 “没找到对象!

在此服务器上找不到请求的URL。如果您手动输入了URL,请检查拼写,然后重试。

如果您认为这是服务器错误,请与网站管理员联系。

错误404

本地主机 Apache / 2.4.17(Win32)OpenSSL / 1.0.2d PHP / 5.5.30“

但是如果我手动将index.php添加到url(然后url看起来像“http://localhost/Achalaweerasooriya.github.io/index.php/LoginController/validate”),则会显示正确的页面。 作为解决方案,我将index.php添加到基本URL,使其看起来像

$config['base_url'] = 'http://localhost/Achalaweerasooriya.github.io/index.php';

然后就像我使用了base_url();要求链接外部css和javascripts,他们就会停止响应。

请指出我正确的方向。谢谢。

2 个答案:

答案 0 :(得分:0)

如果.htaccess文件正在运行,则删除与index.php相关的旧代码行并添加以下代码

或者只是将.htaccess留空并尝试下面的代码。它对我有用。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [QSA,L]
</IfModule>

答案 1 :(得分:0)

从$ config [&#39; base_url&#39;]中删除index.php并尝试此操作

http://addictors.in/remove-index-php-from-url-in-codeigniter/

并重启服务器