我最近开始使用codeIgniter而且我遇到了问题。
我的view
文件夹中有两个文件
当我转到网址http://localhost/php/ci/index.php/
时,它会显示我的index.php页面,一切都很好。
但是当我去http://localhost/php/ci/profile.php/
时,它说
The requested url was not found on server
。
为什么会发生这个问题?
我的控制器文件名是:
home_control将与index.php进行交互,profile_control将与profile.php进行交互。
答案 0 :(得分:0)
这是错误的方法,请阅读有关如何设置.htaccess
文件以及路由如何工作的手册。您不需要有多个index.php
类文件,只应该是一个。
Here is the link你应该从哪里开始阅读。
答案 1 :(得分:0)
你的MVC理解存在根本缺陷。位于文档根目录中的index.php
文件(即您的www目录)实际上负责在每个请求上启动CodeIgniter。这是您在网址栏中看到的index.php
。
您将index.php
与index.php
文件夹内部 编造的views
混淆了。您永远不可能在views
文件夹中创建文件,并且能够使用URL栏立即访问它。你必须经过一个控制器。
如果您访问http://localhost/php/ci/index.php/profile_control
且controllers/profile_control.php
包含::
<?php
class Profile_control extends CI_Controller{
function __construct(){
parent::__construct();
}
function index(){
$this->load->view('profile')
}
}
您将能够看到views/profile.php
为减少混淆,it is essential that you read this before going forward。
答案 2 :(得分:0)
转到您的应用程序/ 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
。默认情况下,它会调用索引操作,因此请确保该控制器中有public function index
。网址结构始终为http://url.com/*controller*/*action*/*extra params here*
如果您希望在控制器中调用其他操作(功能),例如public function profile()
,则可以调用此网址http://localhost/php/ci/profile_control/profile
。
在第二个操作中,您使用 $ this-&gt; load-&gt; view('profile')指定其他视图文件。这将调用 view / profile.php 文件
你也可以像这样将值传递给那个动作 - &gt; http://localhost/php/ci/profile_control/profile/id/7
。
在您的个人资料操作中,您需要获取这些值,如下所示
public function profile($action, $value)
{
//$action = the word id and $value = the number 7
}
答案 3 :(得分:0)
您可以使用以下代码在项目文件夹内但在应用程序文件夹外创建另一个.htaccess文件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
我也遇到同样的问题,其中只有我的索引页有效,而它对我有用!