CodeIgniter: 404 Страница не найдена на Live Server
Я разрабатываю небольшое веб-приложение с помощью CodeIgniter. После тестирования его локально я пошел, чтобы поместить его на свой веб-сервер, чтобы позволить другим людям проверить некоторые функции. Во время навигации к сайту я получаю: -
Страница <Страницa > 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
в это время
Любые предложения о том, что я должен попробовать?
Большое спасибо!
Ответы
Ответ 1
Вы используете MVC с концепцией OOPS. Таким образом, есть некоторые определенные правила.
1) Имя вашего класса (т.е. имя контроллера) должно начинаться с заглавной буквы.
например: ваше имя контроллера - "icecream". это должно быть < I cecream '
В localhost это может быть не обязательно, но на сервере он проверяет все эти правила, иначе он не сможет определить правильное имя класса.
Ответ 2
Выполняется изменение первой буквы в верхнем регистре имени файла и имени класса.
файл: controllers/Login.php
класс: class Login extends CI_Controller { ... }
Имя файла, как имя класса, должно начинаться с заглавной буквы. Это правило также относится к моделям.
https://ellislab.com/codeigniter/user-guide/general/models.html
Ответ 3
У меня была та же проблема. Менялось изменение первой буквы в верхнем регистре.
Ответ 4
Я решил эту проблему, просто сделайте несколько изменений
1- все имя класса контроллера должно начинаться с заглавной буквы. Я имею в виду, что первая буква класса должна быть капиталом. например, у нас есть контроллер с именем класса Страницы
поэтому это должны быть Страницы не страницы
2- сохранить класс класса контроллера как Pages.php
не Pages.php
поэтому первая буква должна быть капиталом
то же самое для модели, первая строка класса модели должна быть капиталом, а также сохранять класс модели как Pages_model.php
не page_model.php
надеюсь, что это решит проблему ур
Ответ 5
Есть несколько вещей, которые вы можете проверить здесь. Я перейду через каждого с вами.
1
При переходе на живой сервер с localhost (htdocs) вам необходимо убедиться, что версия используемого вами PHP поддерживается.
Чтобы проверить это:
Создайте файл index.php 'и добавьте только следующую строку.
<?php phpinfo(); ?>
Просто нажмите " Ctrl + F" и выполните поиск "версии". Вы найдете версию php. Возможно, для поддержки функций может потребоваться 5.3+.
2,
Проверьте config/config.php
и проверьте снимок экрана $config['base_url']
и $config['index_page']
ниже
![enter image description here]()
Я рекомендую поместить имя сайта в базовый пример 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).
Если ничего из вышеперечисленного не работает, дай мне крик, и мы пройдем через него.
Ответ 6
Я застрял с этим примерно в один день, я просто переименовал имя файла "Имя файла" с заглавной буквой и переименовал класс контроллера "Имя класса". и он решил проблему.
**class Myclass extends CI_Controller{}
save file: Myclass.php**
приложение/Config/config.php
$config['base_url'] = '';
Ответ 7
Решил проблему. Измените имя своего класса, чтобы сделать только первую букву заглавной. поэтому, если вы получили что-то вроде "MyClass", замените его на "Myclass". примените его как к имени файла, так и к имени класса.
Ответ 8
Я делаю это на локальном и производственном сервере таким образом:
Маршруты
$route['default_controller'] = 'Home_controller';
Имена файлов:
- в папке контроллеров: Home_controller.php
- в папке моделей: Home_model.php
- в папке views: Home.php
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 {
...
}
Больше не должно быть больше проблем с случаями:)
Ответ 9
Пожалуйста, проверьте файлы папки root/application/core/
, независимо от того, использовали ли вы файлы MY_Loader.php
, MY_Parser.php
или MY_Router.php
.
Если да, попробуйте удалить файлы из папки и проверить, не имеет значения. Фактически, просто очистите эту папку, просто сохранив файл index.html по умолчанию.
Я обнаружил, что эти файлы вызвали проблему для маршрутизации к правильным функциям Контролера.
Надеюсь, что это поможет!
Ответ 10
Я смог зафиксировать подобные ошибки, изменив
http://ip-address/html/ci3-fire-starter/htdocs/index.php/
на строке приложения /config/config.php 26.