невозможно перейти к пользовательскому контроллеру codeigniter

#php #codeigniter #netbeans #wamp

#php #codeigniter #netbeans #wamp

Вопрос:

У меня возникли проблемы с codeigniter 3, я использую netbeans в качестве IDE и wampserver. Я смог успешно перейти в браузер на ‘localhost / ci_test /’ (ci_test — это имя проекта / веб-сайта ‘), и он служил мне по умолчанию welcome.php контроллер, однако я попробовал 2-й контроллер внутри папки CI controller под названием ‘Test.php ‘, со следующим содержанием:

 <?php 
   class Test extends CI_Controller {  

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

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

затем, когда я попытался перейти к этому контроллеру: со следующим URL:
http://localhost/ci_test/index.php/test
это послужило мне моим welcome.php (это не то, чего я хотел),

затем я попробовал этот URL: 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
  

Я не понимаю, чего мне здесь не хватает…

Примечание: я не менял файлы .htacess, предоставленные codeigniter, и оставил их как есть (возможно, проблема там).

Я изменил только следующие вещи в CI:

application/config/config.php:

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

Я надеюсь, что кто-то может помочь здесь 🙂

РЕДАКТИРОВАТЬ: я прочитал первые 4 ответа, и он все еще не работает

EDIT2: итак, после того, как я решил сдаться, я заметил, что на моем сервере apache не включен ‘mod_rewrite’, поэтому я включил его, снова попробовал тот же проект, и он все еще не работал, затем я решил создать новый проект с нуля и с помощью CI добавил новый контроллер итеперь все работает хорошо. это лол… Большое спасибо всем тем, кто пытался мне помочь 🙂

Комментарии:

1. Подумайте об этом. Ваша система всегда запускается с ‘localhost / ci_test /’, если это не запускается, все виды вещей не настраиваются. Поэтому при отладке вы всегда запускаете со стартовой страницы туда, где хотите выполнить отладку. Если вы установите точку останова в интересующем вас скрипте, когда вы попадете туда через обычный поток сайта, точка останова сработает.

Ответ №1:

Вам необходимо получить прямой доступ к этому тестовому контроллеру, затем вам нужно добавить файл .htaccess в корень проекта. вот файл .htaccess, чтобы избежать index.php в codeigniter

 <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

Комментарии:

1. это работает, но тогда я не смог бы получить доступ к ‘welcome. php’ Я хочу иметь прямой доступ ко всем моим контроллерам 🙂

2. Вам нужно использовать гиперссылки для изменения страницы. Контроллер по умолчанию — это то, с чего вы начинаете. <a href="<?php echo base_url('welcome')">Welcome Page</a> должно вернуть вас на страницу приветствия.

3. Вы пробовали использовать ссылку для смены страницы? Если да, то какую ошибку вы получили?

4. да, я только что попробовал это с контроллера ‘test’ (после того, как я изменил $route [‘default_controller’] = ‘test’;), Чтобы вернуться к моему контроллеру ‘welcome’, но это не сработало: не найден Запрошенный URL / ci_test / welcome не был найден на этом сервере. Сервер Apache / 2.4.9 (Win64) PHP / 5.5.12 на порту локального хоста 80

5. Вы не можете поместить гиперссылку в тестовый контроллер, она должна перейти в представление.

Ответ №3:

Из коробки codeigniter использует url . com/controller/метод.

Вы создали тестовый контроллер с именем Test.php . Для доступа к нему вы бы использовали…

 http://localhost/ci_test/test
  

Вы не ставите .php в конце.

Комментарии:

1. Упс @anuraj, ты уже ответил на это, и ты справился лучше!

Ответ №4:

Это быстрый быстрый ответ… Если вы используете WampServer, убедитесь, что он не установил MultiViews ни в вашем файле httpd, ни в файле vhosts, если вы его используете.