为啥 codeIgniter 显示在此服务器上未找到请求的 URL?
Posted
技术标签:
【中文标题】为啥 codeIgniter 显示在此服务器上未找到请求的 URL?【英文标题】:Why codeIgniter show the requested URL was not found on this server?为什么 codeIgniter 显示在此服务器上未找到请求的 URL? 【发布时间】:2016-01-08 19:28:52 【问题描述】:我想问。首先,我会告诉我我已经在我的 windows dekstop 上开发了一个使用 codeIgniter 的应用程序。它清晰并完全运行。
但是,在我将该项目移至 debian 服务器后,它说:
The requested URL /index.php/Admin was not found on this server.
我想问,为什么我会得到这样的输出?尽管我使用相同的代码运行了相同的项目。我该如何解决这个问题?
谢谢...
【问题讨论】:
你是否为你的应用做了足够的路由配置 你用的是什么版本的codeigniter? 首先检查$config['base_url']
和.htaccess
文件值。
【参考方案1】:
首先启用 mod_rewrite,然后使用以下命令重新启动 apache2:
sudo a2enmod rewrite
sudo service apache2 restart
然后使用命令打开 apache conf 文件:
sudo gedit /etc/apache2/apache2.conf
如果有注释,请取消注释
AccessFileName .htaccess
然后在 apache2.conf 中找到这些行
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
这里将 AllowOverride None 行更改为 AllowOverride All 并保存此文件。
现在,您的问题已解决。
【讨论】:
一直在尝试找出一个没有 Codeigniter 的网站有效,而另一个使用 Codeigniter 的网站没有,您的回答解决了问题!太感谢了! +1 @JuOliveira 很高兴,它帮助了你。【参考方案2】:首先您应该知道debian
是一个Linux 基础服务器。所以它不像 Windows 服务器(XAMPP 和 WAMP)。
所以首先考虑一下 Letters。这意味着 debian Sever 区分大小写。
所以也要检查你的命名对话
检查这些
-
控制器类名
class Admin extends CI_Controller
控制器文件名应为admin.php
签入routes.php
。在路线$route['default_controller'] = "admin";
【讨论】:
控制器文件名在codeigniter 3中应该是Admin.php大写 @wolfgang1983 文件名没有害处 但这就是我从 codeigniter 3 的开发人员那里得知的,因为有一些实时服务器。在小写的本地主机上工作正常,但当上线时可能会出现问题。 @wolfgang1983 但我查了一下。它的工作仍然没有伤害。一些你可能是正确的 参见codeigniter.com/user_guide/installation/… "从 CodeIgniter 3.0 开始,所有类文件名(库、驱动程序、控制器和模型)都必须以类似 Ucfirst 的方式命名"【参考方案3】:Codelgniter URL 示例:
example.com/class/function/id/
所以请检查您的班级名称是否正确,并调用 url 而不是 Capital A - Admin to admin。
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
class Admin extends CI_Controller
注意:如果你使用codelgniter-3版本文件名也必须大写A。我的意思是Admin.php
【讨论】:
我认为代码是正确的,因为我也将它托管到另一个 debian 服务器并且很清楚。但是为什么在这台服务器上,我得到了这样的输出?我认为服务器配置有一些问题,你知道吗?谢谢....以上是关于为啥 codeIgniter 显示在此服务器上未找到请求的 URL?的主要内容,如果未能解决你的问题,请参考以下文章