Я разрабатываю небольшое веб-приложение с помощью CodeIgniter. После тестирования его локально я пошел, чтобы поместить его на свой веб-сервер, чтобы позволить другим людям проверить некоторые функции. Во время навигации к сайту я получаю: –
Страница 404 Страница не найдена
При просмотре на моей локальной машине все загружается и работает отлично.
Это то, что я загрузил в каталог public_html
:
application directory system directory assets directory (my assets for the site) index.php
Все они находятся в каталоге public_html
. Как я уже сказал, это дает мне страницу ошибок CodeIgniters 404, поэтому я знаю, что она, по крайней мере, видит CodeIgniter. Я также попытался изменить $config['base_url']
, в config.php
, на мой URL. Такая же ошибка при изменении этого или оставлении его пустым. Я проверил маршруты, и все это кажется правильным. При загрузке на моем локальном компьютере все очень просто загружается.
Я также не использую файл .htaccess
в это время
Любые предложения о том, что я должен попробовать?
Большое спасибо!
Вы используете MVC с концепцией OOPS. Таким образом, есть некоторые определенные правила.
1) Имя вашего класса (то есть: имя контроллера) должно начинаться с заглавной буквы.
например: имя вашего контроллера – «icecream». это должно быть « I cecream»
В localhost это может быть не обязательно, но на сервере он проверяет все эти правила, иначе он не сможет определить правильное имя класса.
Изменяется первая буква в верхнем регистре имени файла и имени класса.
файл: controllers/Login.php
class: class Login extends CI_Controller { ... }
Имя файла, как имя класса, должно начинаться с заглавной буквы. Это правило применяется и к моделям.
https://ellislab.com/codeigniter/user-guide/general/models.html
У меня такая же проблема. Менялось изменение первой буквы в верхнем регистре.
Я решил эту проблему, просто сделайте несколько изменений
1- все имя класса контроллера должно начинаться с заглавной буквы. Я имею в виду, что первая буква класса должна быть капиталом. например, у нас есть контроллер с именем класса Страницы
поэтому это должны быть Страницы не страницы
2- сохранить класс контроллера Страницы как Pages.php
не pages.php
поэтому первое письмо должно быть капиталом
то же самое для модели, первая Pages_model.php
класса модели должна быть капиталом, а также сохранять класс модели как Pages_model.php
not page_model.php
надеюсь, что это решит проблему ур
Есть несколько вещей, которые вы можете проверить здесь. Я поеду с вами.
1, При переходе на живой сервер с localhost (htdocs) вам нужно убедиться, что версия используемого вами PHP поддерживается.
Чтобы проверить это: создайте файл index.php и добавьте только строку ниже.
<?php phpinfo(); ?>
Просто нажмите « Ctrl + F » и выполните поиск «версии». Вы найдете версию php. Возможно, для поддержки функций может потребоваться 5.3+.
2, Проверьте свой config/config.php
и проверьте свой $config['base_url']
и $config['index_page']
снимок ниже
Я рекомендую поместить имя сайта в базовый URL-адрес: « www.site.com/
», но удалите index.php для очистки.
3, НАСТОЯЩЕЕ ПОСЛЕДНИЕ ПРИЧИНЫ ТАК НАЧАЛИСЬ С ЭТОЙ
Скорее всего, это файл .htaccess. Вот мой, сделанный Эллиотом Хотоном. Поместите это в свой корневой каталог и, если необходимо, измените строку 9 «RewriteBase /».
<IfModule mod_rewrite.c> RewriteEngine On # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading # slashes. # If your page resides at # http://www.example.com/mypage/test1 # then use # RewriteBase /mypage/test1/ RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]
<IfModule !mod_rewrite.c> # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. # Submitted by: ElliotHaughin ErrorDocument 404 /index.php
(Убедитесь, что вы используете обе части выше. Редактор разбил его на два, но весь код выше – это один файл .htaccess).
Если ни одно из вышеприведенных действий не даст мне крик, мы пройдем через него.
Я застрял в этом примерно за день, просто переименую имя файла «Имя файла» с заглавной буквой и переименую класс контроллера «Имя класса». и он решил проблему.
**class Myclass extends CI_Controller{} save file: Myclass.php**
приложение / Config / config.php
$config['base_url'] = '';
Решила проблему. Измените имя своего класса, чтобы сделать только первую букву заглавной. поэтому, если вы получили что-то вроде «MyClass», замените его на «Myclass». примените его как к имени файла, так и к имени класса.
Я делаю это на локальном и производственном сервере таким образом:
Маршруты:
$route['default_controller'] = 'Home_controller';
Имена файлов:
Home_controller.php:
class Home_controller extends CI_Controller { public function index(){ //loading Home_model $this->load->model('Home_model'); //get data from DB $data['db_data'] = $this->Home_model->getData(); //pass $data to Home.html $this->load->view('Home', $data); } }
Home_model.php:
class Home_model extends CI_Model { ... }
Больше не должно быть больше проблем с делами 🙂
Проверьте файлы root/application/core/
folder, если вы использовали MY_Loader.php
, MY_Parser.php
или MY_Router.php
.
Если это так, попробуйте удалить файлы из папки и проверить, не имеет значения. Фактически, просто очистите эту папку, просто сохранив файл index.html по умолчанию.
Я обнаружил, что эти файлы заставляли проблему перенаправить на правильные функции контроллера.
Надеюсь, это поможет!
Я смог зафиксировать подобные ошибки, изменив
http://ip-address/html/ci3-fire-starter/htdocs/index.php/
на строке приложения / config / config.php 26.