所以这是一个烦人的问题,有些东西在你的本地项目上运行良好,但是一旦部署到生产环境中,一切都会中断。
在这种情况下,我可以访问由常规 codeigniter 控制器(位于应用程序/控制器中)生成的所有页面。但是,一旦我尝试访问 HMVC 模块,我就会得到一个 codeigniter 404 错误。
常规控制器的情况仍然可以:
因此,例如,如果我有一个位于 application/controllers/C1.php 中的常规控制器 C1,其中包含函数 page(),我可以毫无问题地访问 www.mysite.com/C1/page。
访问 HMVC 控制器的问题:
但是,如果我想通过 URL www.mysite.com/C2/page 访问位于 application/modules/C2/controllers/C2.php 中的控制器 C2,我会收到 404 错误。
通过 ajax 访问常规控制器的问题:
使用引用常规 CI 控制器的路径执行 ajax 调用时会出现第二个问题。ajax 调用中使用的路径似乎无法识别,我收到 500 错误。但是,当直接在 URL 栏中调用相同的路径时,似乎执行了正确的函数。我之前通过应用Codeigniter base_url() not working for ajax中找到的解决方案解决了类似的问题。但是,我还没有确定这是否是同一个问题。
感觉像是装载机问题,但我不是专家!
即使是加载程序问题,为什么它会在本地而不是在生产环境中工作?
你有没有遇到过这样的事情?你知道如何解决这个问题吗?
**编辑 3:** 我删除了之前的 2 个编辑,因为它们现在无关紧要。
激活调试模式并添加一些日志后,我终于找到了我认为的答案。
长话短说,我的本地 codeigniter 版本在 Windows 上运行,并且由于某种原因,当尝试访问控制器时,该案例被忽略了。所以File.php和file.php被认为是相同的。
但是,我的生产服务器运行 linux,因此它不认为 2 个不同的文件名引用同一个文件。所以我要求文件.php,服务器回答“没有这样的文件”,因为我真正想要的文件是文件.php。
我需要上交。我会在进行更多检查后,明天提出一个正确的答案。
谢谢,
洛伊克。