【发布时间】:2011-10-14 15:58:55
【问题描述】:
我遇到了类似的 404 错误消息问题。 我正在使用 CI 2.0.2,我有一个基本的 1and1 共享主机,我的 .htaccess 位于我的网站根目录 (/mywebsite/.htaccess) 目录中,它看起来像这样
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
在我的 config.php 文件中,我有以下内容:
<?php
$config['base_url'] = 'http://mywebsite.com';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
不管我做什么,我都会收到 404 页面未找到错误:http://d.pr/F2KR
我已经花了几个小时寻找解决这个问题的方法,但一直无法解决。
非常感谢您对此问题的任何建议、提示或实际答案。
更新 1: 我打电话给 1and1,他们告诉我这一定是 index.php 的问题,因为 404 错误消息是由 CodeIgniter 而不是服务器生成的。还有其他我应该查看的配置值吗?
更新 2: 我发现有一个区分大小写的问题(这很奇怪,因为 localhost 和 server 分别是 UNIX/LINUX),如果控制器类称为 Login,那么路径需要是 mysite.com/Login/ 它不能是 mysite .com/登录/。我还不确定这个问题会如何解决,我不想重写一堆路径。
更新 3(已解决):如更新 2 所述,问题不在于 .htaccess,而是我的模型和控制器的命名方案,更具体地说是文件名。显然,在我的 Mac(开发机器)上,我可以拥有名为 User.php 或 Login.php 的模型,如果我在 URL 中使用大写或小写字母,则没有区别,但是一旦我将代码上传到 1and1,我就会不断得到CI "404 not found" 错误消息。我对这个问题的特殊解决方案是将所有模型和控制器文件名更改为小写,如这篇文章 http://codeigniter.com/forums/viewthread/129013/#636849 中所建议的那样。
【问题讨论】:
-
您确定您的服务器上启用了 mod_rewrite 吗?这肯定会导致 404 错误。
-
@Onema 请仔细检查您的主机帐户:根据您提供的屏幕截图,我认为您可能拥有不支持 .htaccess 文件的 Windows 主机(IIS 服务器)(除非某些第 3 方模块是已安装,例如 Helicon ISAPI_Rewrite v3 或 Helicon Ape)。 P.S. 而且不需要在
<IfModule mod_rewrite.c>中包含AddType和AddHandler指令——这没有多大意义。 -
@Chris Schmitz:我会就此联系我的托管服务提供商。
-
@LazyOne 404 错误是由 CI 生成的,这就是它采用这种样式的原因。我是一台 linux 服务器,这是我从 phpinfo() 获得的信息:Linux infong 2.4 .. GNU/Linux。谢谢你们的cmets。
标签: .htaccess codeigniter http-status-code-404 shared-hosting