【问题标题】:In Codeigniter some URIs pass through index.php, some don't在 Codeigniter 中,一些 URI 会通过 index.php,而一些则不会
【发布时间】:2011-05-04 18:27:52
【问题描述】:

基本上一个控制器(controller/topics.php,http://192.168.1.50/topics)像它假设的那样通过 CI 的 index.php,而另一个(controller/user.php,http://192.168.1.50/user)出于某种奇怪的原因根本没有通过(我在浏览器中收到 404 错误)。 CodeIgniter 和/或 Apache2 正在做一些时髦的事情,我无法弄清楚:'.../user' 给了我 Apache 的 404 页面,但 '.../User' 给了我 CI 的 404 页面,这意味着 CI 使用大写控制器名称并忽略 一些 具有小写控制器名称的 URI(然后 Apache 尝试处理 URI)。

任何想法为什么以及如何解决?

附: - 是的,我确实在 CI 的论坛上发布了我的问题,但我没有得到他们的帮助。我在 Linux 发行版(带有 LAMP 的 Ubuntu 10.10)上运行 CodeIgniter 2.0.2。

【问题讨论】:

  • 同样奇怪的是'.../index.php/user' 加载成功。所以在所有控制器(cmets、home、topics、user、welcome)前面加上丑陋的'index.php/'会成功加载(除了图像、css、js 的链接现在中断),但没有丑陋的'index.php /' 只有部分控制器加载成功(主页、主题、欢迎)。弗拉克!!
  • 发布你的 .htaccess 文件内容(隐藏任何重要的东西),还有你的 route.config 呢?
  • pastebin.com/T7VjM6ba - 有与此问题相关的文件的相关 sn-ps(包括 .htaccess 和路由配置)

标签: codeigniter controller uri codeigniter-url


【解决方案1】:

问题在于重写条件语法是说不要路由以 i、c、j 或 u 开头的文件夹,而不是名称为 i、c、j 或 u 的文件夹。巧合的是,我没有加载的控制器名称以 i(想法)和 u(用户)开头。

我可以将我的静态文件夹重命名为其全名(“uploads”而不是“u”)并更新重写条件并解决此问题,但我想保持名称相同。任何人碰巧知道重写条件以匹配确切名称(而不是 like 或开头)的正确语法?

【讨论】:

  • 请不要用另一个问题回答一个问题:)
【解决方案2】:

检查您的控制器名称,人们(我发现)最常见的做法是复制他们的“主”控制器(例如 topic.php)并将文件名重命名为 whatever.php

他们开始开发并且控制器名称保持为“主题”。由于找不到控制器(不是实际文件)而引发 404

例如: class Blog extends CI_Controller {...

如果上述代码位于名为 stuff.php 的文件中。如果你打电话给/stuff,你会得到一个 404

【讨论】:

  • 是的,控制器名称与文件名匹配(文件名当然是小写的)。
【解决方案3】:

我昨天遇到了类似的问题。默认控制器可以有一个大写的文件名,但任何其他控制器在大写时都会产生 404。这是在 MAMP 设置上。

确保您的控制器也反映文件名。

class User extends CI_Controller {

【讨论】:

  • 这实际上是不正确的,您的控制器必须首字母大写! codeigniter.com/user_guide/general/controllers.html
  • 你是对的。我指的是文件名,并没有大写实际的声明。接得好。谢谢。
  • 是的,我的控制器也是大写的。
  • “短网址”是什么意思?
  • 你能发布你的 .htaccess 文件吗?
【解决方案4】:

在您的 htaccess 中...而不是

RewriteRule ^(.*)$ /index.php/$1 [L]

试试

RewriteRule ^(.*)$ index.php/$1 [L]

并在您的 CI 配置中按照说明设置 base_url(包括尾随 /!)

$config['base_url'] = 'http://www.site.com/';

应该可以的。

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 2023-01-29
    • 2023-04-09
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2011-05-12
    • 2018-01-27
    • 2013-02-23
    相关资源
    最近更新 更多