1

我最近开始使用 codeIgniter,但遇到了一个问题。

我的文件view夹中有两个文件

  1. 索引.php
  2. 配置文件.php

当我转到 urlhttp://localhost/php/ci/index.php/时,它会显示我的 index.php 页面,一切都很好。

但是当我去http://localhost/php/ci/profile.php/它说

The requested url was not found on server.

为什么会发生这种情况是什么问题??

我的控制器文件名称是:

  1. home_control.php
  2. profile_control.php

home_control 将与 index.php 交互,而 profile_control 将与 profile.php 交互。

4

4 回答 4

0

这是错误的做法,请阅读有关如何设置.htaccess文件以及路由如何工作的手册。你不需要有多个index.php类似的文件,应该只有一个。

这是您应该开始阅读的链接。

于 2012-10-14T07:54:44.887 回答
0

您对 MVC 的理解存在根本缺陷。index.php位于文档根目录(即 www 目录)中的文件实际上负责在每个请求上启动 CodeIgniter。这就是index.php您在 URL 栏中看到的内容。

对在文件夹中制作index.php的内容感到困惑。您永远无法在文件夹内创建文件并使用 URL 栏立即访问它。你必须通过一个控制器。index.phpviewsviews

如果您访问http://localhost/php/ci/index.php/profile_controlcontrollers/profile_control.php包含::

<?php
class Profile_control extends CI_Controller{
    function __construct(){
        parent::__construct();
    }
    function index(){
        $this->load->view('profile')
    }
}

您将能够看到里面的内容views/profile.php

为减少混淆,您必须在继续之前阅读此内容

于 2012-10-14T07:56:20.593 回答
0

就像另一个说的那样。一切都通过 index.php。但是您实际上可以隐藏它,这样您就不必在 url 中键入它,这不是很漂亮。

转到您的 applications/config/config.php 并找到类似以下内容:

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = "index.php";

删除 index.php。如果我没记错的话,你需要在 .htaccess (在你的 index.php 旁边)添加这个:

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

如果一切正常,您可以调用您的配置文件控制器,例如http://localhost/php/ci/profile_control. 默认情况下,它会调用 index 操作,因此请确保您public function index在该控制器中有一个。url 结构总是http://url.com/*controller*/*action*/*extra params here*

例如,如果你想在你的控制器中调用另一个动作(函数)public function profile(),你可以调用这个 url http://localhost/php/ci/profile_control/profile

正是在第二个操作中,您使用$this->load->view('profile')指定了其他视图文件。这将调用view/profile.php文件

您也可以像这样 -> 将值传递给该操作http://localhost/php/ci/profile_control/profile/id/7

在您的个人资料操作中,您需要如下获取这些值

public function profile($action, $value)
{
    //$action = the word id and $value = the number 7
}
于 2012-10-14T08:15:06.800 回答
0

您可以使用以下代码在项目文件夹内但在应用程序文件夹外创建另一个 .htaccess 文件

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

我也有同样的问题,只有我的索引页面在工作,它对我有用!

于 2019-07-18T07:42:03.363 回答