【问题标题】:Codeigniter URLs showing 404显示 404 的 Codeigniter URL
【发布时间】:2014-10-10 09:21:47
【问题描述】:

我有一个简单的网络托管平台。我在 /var/www/html 上托管一个 Codeigniter 应用程序 意思是这是文件结构:

html 
|-application
|---controllers
|---models
|---views
|---config
|-public
|-system
|-index.php
|-.htacess

我的 .htaccess 文件如下所示:

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

在我的 config.php 文件中,我有默认的根视图控制器:

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

在我的 routes.php 文件中,我有

$route['default_controller'] = "home"

所以,当我在浏览器中打开 www.mysite.com 时,我自然会自动返回 home/index。但是当我尝试任何其他 URL 时,例如

www.example.com/home
www.example.com/home/index
www.example.com/admin

我收到 404 错误。值得注意的是,该文件夹在我的本地计算机和我尝试过的另一台远程服务器上运行良好。

更准确地说,当我尝试 www.example.com/home 时出现此错误

Not Found
The requested URL /home was not found on this server.

编辑

我的家庭控制器看起来像这样。

class Home extends CI_Controller{

    public function __construct() {
        parent::__construct();
    }

    public function index(){
        $this->load->view('home_view');
   }

    public function someFunction(){
       echo 'In some function';
    }

}

编辑

我不知道这是否有帮助,但将 index.php 添加到 URL 似乎可以按预期打开页面。所以

www.example.com/controller/function (DOES NOT WORK)
www.example.com/index.php/controller/function (WORKS)

有什么帮助吗?

【问题讨论】:

  • 请添加您的Controller的更多代码,以便我们看到更多信息。
  • 它是一个非常简单的控制器。我已经添加了代码。请参阅编辑。
  • 你有没有试过在 RewriteEngine on 之后添加 RewriteBase / ?
  • 您确定将上传的 .htaccess 提供给服务器吗?它是可读的吗? Web 服务器的错误日志说明了什么?
  • 是的,它可读并上传到服务器上。没有与此问题相关的最新错误日志。

标签: php codeigniter web codeigniter-url


【解决方案1】:

您需要在路由文件中为不同的 url 指定操作。 与 site.com/search 一样,在 $route['default_controller'] = "home",

之前添加
$route['search'] = "home/search"

这意味着,你将在你的家庭控制器中创建一个函数搜索,它将加载指定 url 的视图文件。

【讨论】:

  • 嗯,我很确定这不是解决方案,因为我可能有 100 个动态链接和函数,我不想为每个链接和函数添加路由。如果同一个文件夹在另一个远程服务器上工作,则必须对此进行其他解释。
  • 老兄,您之前没有提到您有 100 个动态链接。无论如何,这不是一个被否决的错误解决方案。创建动态链接的解决方案是类似的,你只需修改你的路由到这个, $route['search/(:query)'] = "home/search/$1";并在家庭控制器的搜索功能中创建一个参数。
  • 感谢您的回复。我仍然认为这不是解决这个问题的正确方法,因为这是一个更普遍的问题。 PS:我的声誉低于 100,所以我不能投票。其他认为这不是解决此问题的正确方法的人可能会否决:)
  • 没问题,瓦里斯!几个月前,我参与了一个基于 codeigniter 的项目。这是我的设置,如果它们对你有用的话, config.php : $config['base_url'] = ''; $config['index_page'] = 'index.php?'; $config['uri_protocol'] = 'REQUEST_URI'; .htaccess: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php?/$0 [PT,L]
猜你喜欢
  • 2021-10-24
  • 2014-08-01
  • 2014-05-25
  • 1970-01-01
  • 2012-07-17
  • 2012-05-10
  • 2015-12-13
  • 2017-07-02
  • 1970-01-01
相关资源
最近更新 更多