我正在使用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中的错误 请帮忙。
答案 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>