调用没有index.php的控制器时,codeigniter 3中出现404错误

时间:2016-03-12 07:04:46

标签: php .htaccess codeigniter mod-rewrite codeigniter-3

我正在使用codeigniter 3。

我创建了像

这样的登录控制器
<?php
class Login extends CI_Controller
{
     public function index()
     {
          echo "It's working";
     }
}
?>

我的.htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

我也启用了重写模块。

正在开展

http://localhost/codeigniter/index.php/login

但不是

http://localhost/codeigniter/login

我该如何解决这个问题。或其在codeigniter 3.0.4中的错误 请帮忙。

5 个答案:

答案 0 :(得分:2)

您的mod_rewrite规则正在重定向到 /index.php 而不是 /codeigniter/index.php

将它放在.htaccess文件中:

RewriteBase /codeigniter/

答案 1 :(得分:0)

更改

$config['index_page'] = 'index.php';

$config['index_page'] = '';

在config / config.php

答案 2 :(得分:0)

打开config.php并执行以下替换

$config['index_page'] = "index.php"

$config['index_page'] = ""

在某些情况下,uri_protocol的默认设置无效。 只需替换

$config['uri_protocol'] ="AUTO"

通过

$config['uri_protocol'] = "REQUEST_URI"
  

htaccess的

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

答案 3 :(得分:0)

你可以尝试使用我在xampp上使用的htaccess。

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

放在项目的主目录中。

在config.php上

$config['base_url'] = 'http://localhost/your_project/';

$config['index_page'] = '';

并确保您的班级和文件名具有首字母大写字母,如here所述。

还有更多htaccess Here

答案 4 :(得分:0)

如果这仍然不起作用,您可能需要检查一下httpd conf,以确保允许覆盖.htaccess,因为AllowOverride控制可以在.htaccess文件中放置哪些指令。始终,如果将设置放置在.htaccess文件中,并且没有为这些设置设置AllowOverride,则dafault Apache设置仍将运行,并且.htaccess中的所有内容均不会使用。例如

<VirtualHost *:80> 
  ServerName application.co

  DocumentRoot "/Users/www/htdocs/application/"
  ErrorLog "/Users/www/logs/application_error.log"



  <Directory "/Users/www/htdocs/application/" >
      DirectoryIndex index.php index.html
      Order allow,deny
      Allow from all
      Allow from localhost, application.co
      Require all granted
      AllowOverride All
   </Directory>
 </VirtualHost>