CI 3.0有问题
如果我在routes.php文件中保留默认控制器“欢迎”,一切都运行良好。
但如果我改变它,即“主”CI开始抛出404错误
第一步的主控制器与欢迎相同。我只是复制了文件。重命名,更改了类名(ofcourse),并在index()
加载视图中。
有什么建议吗?
还有一件事...... 即如果我尝试去mydomain.com/welcome - 工作, 如果我尝试去mydomain.com/main - NOT。 即使我改变路线默认控制器回到欢迎
我的main.php文件:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Main extends CI_Controller {
function index(){
$this->load->view('welcome_message');
}
}
我的routes.php文件:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
答案 0 :(得分:5)
如评论中所述:您的控制器的文件名必须以大写字母开头。在你的情况下,Main.php。 见http://codeigniter.com/userguide3/changelog.html
«更改了filenaming约定(类文件名现在必须是Ucfirst,其他所有内容都是小写的)。 »
答案 1 :(得分:0)
尝试将function index()
更改为公开。
如果这不起作用,请尝试添加URL:domain.com/index.php/main
看看会发生什么。有时你需要在其他服务器上使用.htaccess来删除 index.php 。
答案 2 :(得分:0)
我坚持这个问题。 我修复它只是替换路径。 这里&#34;网站&#34;如果要使用CI,则默认使用文件夹,您必须将所有代码存储到&#34; site&#34;夹。如果您尚未使用站点文件夹进行安装,则它将无法与多个控制器设置一起使用。 因此,您可以将默认控制器视为可行,其他人则显示为404。
更改根目录中的.htacess文件。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^(.*)$ /site/index.php/$1 [L]
RewriteRule ^(.*)$ /codeig/index.php/$1 [L]
</IfModule>
上面你可以看到有
RewriteRule ^(.*)$ /codeig/index.php/$1 [L]
更改了#34; codeig&#34;根文件夹。
答案 3 :(得分:0)
您只需要在application/config/routes.php
中设置默认控制器
$route['default_controller'] = $this->set_directory('front/home/').'home/index';
for Ci 3.x