codeigniter 3 - 删除 index.php:Linux 上的错误 404,但在 Windows 上工作正常

Posted

技术标签:

【中文标题】codeigniter 3 - 删除 index.php:Linux 上的错误 404,但在 Windows 上工作正常【英文标题】:codeigniter 3 - remove index.php : error 404 on linux but work fine on windows 【发布时间】:2016-05-28 22:27:33 【问题描述】:

在 linux 上出现错误 404,但在 windows 上可以正常工作。这是什么原因造成的?

我用这个教程:http://www.tutora.fr/apprendre-codeigniter/les-controleurs

application/config/routes.php:

$route['default_controller'] = 'welcome';
$route['translate_uri_dashes']  = FALSE;
$route['login'] = 'user_authentification/user_authentification';

application/config/config.php:

$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
$config['subclass_prefix'] = 'CORE_';

Windows 上的本地托管 (XAMPP) 在 url mysite.dev/login 上运行良好。

Linux 上的实时托管在 url mysite.pro/login 处产生 404 错误。

如果我添加 index.php (mysite.pro/index.php/login),它可以正常工作,但我会删除它。

【问题讨论】:

可能是因为几个问题。其中一些是文件权限问题,mod rewrite enable/disable,bad CI config etc @safin chacko:你是对的。我刚刚给管理员发了一封邮件。我希望 .. 看到花朵生长 ;) 在基本网址中输入http://mysite.pro/。甚至在docs推荐。 【参考方案1】:

Linux 区分大小写。请记住,您在哪种情况下编写了目录和文件名。您应该在任何文件中写入与文件或目录所属完全相同的文件或目录名称。

请检查user_authentification 的文件/目录。此外,控制器/模型的第一个字母应该是大写(codeigniter 要求)。请检查您是否正确写了controller/model 名称。

更新

将以下 sn-ps 放在.htaccess 文件中:

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

【讨论】:

你是对的,它写得对。 mysite.pro/login(404 错误),mysite.dev/index.pro/login(工作正常)。我不明白为什么...... 你启用 mod_rewrite 了吗?如果没有,请启用 mod_rewrite 并告诉我,如果你没有,我会发给你一些代码,这些代码应该写在 .htaccess 上。 我的 .htaccess 文件中已经有了这个。我只是清除了我的文件并留下了您的配置:没有变化。我希望收到管理员的电子邮件。 你是在本地主机还是主机上? 这是我自己的主机。 Linux 3.2.0 Debian 3.2.51-1 x86_64。【参考方案2】:

如果尚未创建其他 .htaccess 文件,则在项目根目录中创建 .htaccess 文件。

复制粘贴下面的代码。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /projectname
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>

你可以试试这个链接http://addictors.in/remove-index-php-from-url-in-codeigniter/

别忘了重启你的服务器

希望对你有帮助。

【讨论】:

我只是告诉管理员检查 virtualhost 中的这些行,如果这些行不匹配则更改它们并重新启动 apache。我等待 DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all 管理员进行了一些测试。一切都很好;(通常,.htaccess 文件应该重定向到 index.php/login 和 mysite.pro/login 显示在浏览器上。codeigniter 尚未加载【参考方案3】:

管理员发现了错误。虚拟主机出现错误。 .htaccess 文件从未被执行。 谢谢大家的帮助。

【讨论】:

以上是关于codeigniter 3 - 删除 index.php:Linux 上的错误 404,但在 Windows 上工作正常的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 3.1.6 - 如何从 url 中删除 index.php

从 Codeigniter 3 的 URI 中删除 index.php

codeigniter 3 - 删除 index.php:Linux 上的错误 404,但在 Windows 上工作正常

从 codeigniter 2.1.3 中删除 index.php

如何删除codeigniter路径中的index.php?

如何删除codeigniter路径中的“index.php”