#codeigniter #live #bluehost
#codeigniter #ЖИВЫЕ КОНЦЕРТЫ #bluehost
Вопрос:
Я новичок в CI. Все это время я занимался своими недавними проектами на своем локальном хостинге. Я выбрал CodeIgniter и Doctrine в качестве своей базы данных.
Мои спецификации локального хостинга следующие:
Windows 7 Wampserver 2.0
У меня также включен rewrite_module в моем apache.
С самого начала все работало нормально с CI и Doctrine на моем локальном хостинге. Мне удалось завершить свой проект, и я с радостью ждал, когда смогу перенести свой первый проект в режиме реального времени и загрузить его в подкаталог моей учетной записи bluehost.
Перед передачей файлов я изменил config.php и database.php путем заполнения требуемых значений.
Но после того, как я загрузил свои файлы (вместе с .htaccess) своему поставщику хостинг-решений, я не смог увидеть ничего, кроме ошибки 404 (это из класса codeigniter, а не с моей страницы решений для хостинга). Я продолжаю получать это. Я перепробовал несколько вариантов, но я не могу понять, что это все значит. Я уверен, что index.php вызывается, и когда он пытается выполнить маршрутизацию к контроллеру по умолчанию (который в моем случае является «домашним»), по какой-то причине происходит сбой.
Структура каталогов на моем локальном хостинге
PathtoWamp-> www-> mysitefolder
Структура каталогов на моем живом сайте
public_html (это моя корневая папка)-> mysitefolder
Я также мог видеть, что rewrite_module был включен на моем реальном сервере (так говорит мое решение для хостинга bluehost, и я предполагаю, что это правда)
Поскольку я очень сильно превысил крайний срок, мне интересно найти решение. Пожалуйста, дайте мне знать, если у кого-нибудь из вас, ребята, есть какие-либо идеи.
Заранее спасибо.
С уважением, Ашок Шринивасан.
Ответ №1:
Я выяснил корень проблемы. Все это время это был не .htaccess, не httpd.conf и не bluehost, это был не бог, не кто-либо другой, но настоящим виновником был мистер CodeIgniter.
Если вы посмотрите на Router.php находится внутри system / libraries, тогда вы найдете строку под номером 88, где
$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']);
если вы заметили, что в конце троичного файла они принудительно выполняют операцию strtolower над именем контроллера. Я удалил этот метод и просто позволил использовать исходное имя на этом этапе, изменив строку на this .
$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : $this->routes['default_controller'];
Хорошо, но что здесь такого особенного? Да, сейчас это имеет большой смысл. На моем локальном сервере был установлен wamp в Windows, а мой рабочий сервер был размещен на Unix-сервере. Поскольку очень хорошо известно, что Windows — мягкий парень, который не сильно беспокоится о чувствительности к регистру, в то время как Unix, наоборот, очень разборчив.
Все имена контроллеров в моем проекте были написаны с заглавной буквы, отсюда возникла реальная проблема. Также я зашел в свой routes.php лежит в приложении / конфигурации, где я исправил проблемы с этой точки зрения.
Наконец-то я могу разместить свой сайт сейчас. Спасибо всем, кто вложил в это свои головы после прочтения моего вопроса.
С уважением,
Ашок Шринивасан.
Комментарии:
1. я не смог найти этот файл в своей системе codeingiter / библиотеки / Routerphp
Ответ №2:
У меня была такая же проблема в вашем httpd.conf
вам нужно найти строку, подобную этой
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
Измените его на
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
Это все, что мне потребовалось
Комментарии:
1. Боюсь, я не смогу отредактировать httpd.conf. Поскольку это общий хостинг, похоже, мне не предоставлен к нему доступ. Но все равно попробую это сделать, обратившись в службу поддержки. Тем временем большое спасибо austinbv за это.
2. Я даже пытался удалить .htaccess в моем корневом каталоге (public_html), а также .htaccess внутри подкаталога, где размещен сайт моего проекта. Но безуспешно. Эта штука просто сводит меня с ума. Или я что-то здесь упускаю. Даже после удаления этих двух файлов (.htaccess) я по-прежнему не вижу ничего, кроме страницы с ошибкой codeigniters 404 с некоторыми инструкциями echo, которые я написал внутри файла с ошибкой, чтобы подтвердить, что именно codeigniter выдает ошибку 404. Это что-то вроде того, что CodeIgniter не может загрузить свои контроллеры из-за неправильного сопоставления путей? Мой конфигурационный файл, безусловно, хорош