【问题标题】:Codeigniter 404 can't find index.php (only on real server, not on virtual server)Codeigniter 404 找不到 index.php(仅在真实服务器上,不在虚拟服务器上)
【发布时间】:2010-04-14 22:57:12
【问题描述】:

我有一个使用 CodeIgniter 的工作网页。我现在只是将它上传到我的网络服务器,它给了我一个 404 错误。

浏览器地址为“web-page.com/folder/en/about”

配置中的baseurl是“web-page/folder/”

这也在 config.php 中,我确实尝试了 AUTO,但它也不起作用。

$config['index_page'] = "";
$config['uri_protocol'] = "QUERY_STRING";

index.php 位于“web-page.com/folder/”中

我的 htaccess 在“web-page.com/folder/.htaccess”中

.htaccess 的内容是

AddCharset utf-8 .css .html .xhtml
Options +FollowSymlinks
RewriteEngine on
RewriteBase  /folder/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|media|layout|css|libs|robots\.txt)
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

您有什么建议,有什么想法吗,我可以尝试做什么?我确实检查了所有权利,即使使用 777 也不起作用。

提前致谢。

卢卡斯

【问题讨论】:

  • 检查 mod_rewrite 是否在您的服务器上。我前段时间遇到过这样的问题,结果发现 mod_rewrite 不存在。
  • 嘿,谢谢你的想法,但是 mod_rewrite 在我的服务器上肯定是激活的。我确实尝试了不同的服务器,但它也无法在那里工作。

标签: .htaccess mod-rewrite codeigniter http-status-code-404 codeigniter-url


【解决方案1】:

我知道这应该是一个评论,但显然我还没有足够的代表。谁是您的网络主机?这有时可能会影响整个过程。

我知道 GoDaddy 需要一些不同的配置设置才能使 CodeIgniter 在没有 'index.php' 的情况下正常工作。

如果是,您需要将 uri_protocol 配置项更改为 QUERY_STRING。

您可以将 index_page 设置留空,但您需要将 htaccess 文件更新为如下内容:

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

【讨论】:

  • 我忘了提...即使您的主机不是 GoDaddy,您也可能想尝试一下,因为它只需要一分钟。
  • 遗憾的是它没有成功。我总是收到同样的信息。但我才发现。如果我的 .htaccess 中有错误,则表示找不到 index.php,而如果 htaccess 正确,则会出现 404 错误。这意味着,它确实找到了索引 php,不是吗?可能还缺少其他东西。
【解决方案2】:

好吧,愚蠢的,愚蠢的我。我明白了。

错误出现在我的“routes.php”中,我不得不将默认控制器小写

$route['default_controller'] = "Base";

到:

$route['default_controller'] = "base";

我的离线服务器确实可以使用它。感谢您的支持。

【讨论】:

  • 我有同样的问题,但这对我不起作用。我被难住了,不知道怎么了。
  • 这是一个区分大小写的问题。小写您的控制器文件名。例如“Contact.php”->“contact.php”。我假设你在 windows 上开发,在 linux 上主机?
【解决方案3】:

至少值得一提的是,尽管我可以将数据打印到屏幕上,但我得到了一个 404 http 代码。尝试在表单之间传递 POST 数据时出现问题。

长话短说,确保您已启用 apache 重写:

apache2ctl -t -D DUMP_MODULES

或者,在 phpinfo() 中“apache2handler”下的“加载模块”下查找“mod_rewrite”。

启用 apache 重写:

sudo a2enmod rewrite

希望这对某人有所帮助!

【讨论】:

    【解决方案4】:

    试试

    $config['uri_protocol'] = REQUEST_URI 
    

    在 REQUEST_URI 或 QUERY_STRING 之间切换对我有用

    【讨论】:

      【解决方案5】:

      如果有人再次阅读这篇文章,不要忘记检查url中的所有大小写字母

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-23
        • 1970-01-01
        • 2023-03-15
        • 2015-06-07
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 2017-06-22
        相关资源
        最近更新 更多