【问题标题】:unable to browse to codeigniter custom controller无法浏览到 codeigniter 自定义控制器
【发布时间】:2016-10-06 11:19:47
【问题描述】:

我在使用 codeigniter 3 时遇到问题,我使用 netbeans 作为我的 IDE 和 wampserver。 我能够成功浏览到“localhost/ci_test/”(ci_test 是项目/网站的名称),它为我提供了默认的welcome.php 控制器, 但是我在名为“Test.php”的 CI 控制器文件夹中尝试了第二个控制器,其内容如下:

<?php 
   class Test extends CI_Controller {  

      public function index() { 
         echo "This is default function."; 
      } 

      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

然后当我尝试浏览到该控制器时:使用以下网址: http://localhost/ci_test/index.php/test 它为我服务了我的welcome.php(这不是我想要的),

然后我尝试了这个网址: http://localhost/ci_test/test.php

我得到了回应:

Not Found

The requested URL /ci_test/test.php was not found on this server.

Apache/2.4.9 (Win64) PHP/5.5.12 Server at localhost Port 80

我不明白我在这里错过了什么......

注意:我没有更改 codeigniter 提供的 .htacess 文件,而是保持原样(可能是那里的问题)。

我在 CI 中只更改了以下内容:

应用程序/config/config.php:

$config['base_url'] = 'http://localhost/ci_test/';
$config['index_page'] = ''
$config['uri_protocol'] = 'PATH_INFO';

我希望有人可以在这里提供帮助:)

编辑: 我已经阅读了前 4 个答案,但它仍然不起作用

编辑2: 所以在我决定放弃之后,我注意到我的 apache 服务器没有打开“mod_rewrite”,所以我打开了它 再次尝试了同一个项目,但它仍然没有工作,然后我决定从头开始创建一个新项目,并使用 CI,我添加了新的控制器,现在一切正常。这是大声笑... 非常感谢所有试图帮助我的人:)

【问题讨论】:

  • 想想吧。您的系统总是从 'localhost/ci_test/' 开始,如果它没有运行,那么各种事情都无法设置。因此,在调试时,您总是从起始页运行到要调试的位置。如果你在感兴趣的脚本上设置断点,当你通过网站的正常流程到达那里时,断点就会触发。

标签: php codeigniter netbeans wamp


【解决方案1】:

您需要直接访问该测试控制器,然后您需要在项目根目录中添加 .htaccess 文件。 这是用于避免在 codeigniter 中使用 index.php 的 .htaccess 文件

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

如果您在根目录中添加此 .htaccess 文件,您的问题将得到解决..

也不需要在你的 url (http://localhost/ci_test/test.php) 中添加扩展名,这是错误的

http://localhost/ci_test/test

这足以加载您的控制器

【讨论】:

    【解决方案2】:

    欢迎控制器

    <?php
    class Welcome extends MY_Controller 
    {
        public function index()
        {
           $this->load->view('welcome');
        }
    }
    

    欢迎观看

    <a href="<?php echo base_url('test'); ?>">Test Page</a>
    

    测试控制器

    <?php
    class Test extends MY_Controller 
    {
        public function index()
        {
           $this->load->view('test');
        }
    }
    

    测试视图

    <h1>Test Page</h1>
    

    视图必须命名为 test.php 和welcome.php 并放入views 文件夹中。

    让我们知道你的进展。


    查看配置文件夹中的 routes.php 文件

    更改$route['default_controller'] = 'welcome';

    $route['default_controller'] = 'test';

    看看有没有用

    如果您收到错误提示找不到页面,请查看地址栏是否是这样的

    http://localhost/ci_test/test

    试着改成这个

    http://localhost/index.php/ci_test/test

    【讨论】:

    • 这行得通,但是我将无法访问 'welcome.php' 我希望能够直接访问我的所有控制器 :)
    • 您需要使用超链接来更改页面。默认控制器就是您开始的地方。 &lt;a href="&lt;?php echo base_url('welcome')"&gt;Welcome Page&lt;/a&gt; 应该会让你回到欢迎页面。
    • 您是否尝试过使用链接更改页面?如果是这样,您遇到了什么错误?
    • 是的,我刚刚从“测试”控制器尝试过(在我更改了 $route['default_controller'] = 'test';)返回到我的“欢迎”控制器,但这不起作用: Not Found 在此服务器上未找到请求的 URL /ci_test/welcome。 Apache/2.4.9 (Win64) PHP/5.5.12 服务器在 localhost 端口 80
    • 你不能把超链接放到测试控制器中,它必须放到视图中。
    【解决方案3】:

    开箱即用,codeigniter 使用 url 。 com/控制器/方法。

    您已经创建了一个名为 Test.php 的测试控制器。 要访问它,您将使用...

    http://localhost/ci_test/test
    

    你不要把.php放在最后。

    【讨论】:

    • 哎呀@anuraj,你已经回答过了,而且你做得更好!
    【解决方案4】:

    这是一个匆忙的快速回答...如果您使用的是 WAMPServer,请检查它是否没有在您的 httpd 文件或 vhosts 文件中设置 MultiViews(如果您正在使用它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2022-10-17
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多