Трабл хостинг с CodeIgniter - PullRequest
1 голос
/ 18 мая 2011

Я новичок в КИ. Все это время я делал свои последние проекты на моем локальном хосте. Я выбрал CodeIgniter и Doctrine в качестве своей базы данных.

Мои спецификации локального хоста:

Windows 7 Wampserver 2.0

У меня также включен rewrite_module в моем apache.

С самого начала все работало нормально с CI и Doctrine на моем локальном хосте. Мне удалось завершить свой проект, и я с нетерпением ждал, когда перенесу свой первый проект в живую, и загрузил его в подкаталог моей учетной записи bluehost.

Перед передачей файлов я изменил config.php и database.php, заполнив необходимые значения.

Но после того, как я загрузил свои файлы (вместе с .htaccess) в моего провайдера хостинговых решений, я не увидел ничего, кроме ошибки 404 (это из класса codeigniter, а не из моей страницы хостинговых решений). Я продолжаю получать это. Я пробовал несколько вариантов, но я не могу понять, что это все. Я уверен, что index.php вызывается, и когда он пытается маршрутизировать к контроллеру по умолчанию (в моем случае это «home»), он по какой-то причине завершается неудачей.

Структура каталогов в моем локальном хосте

PathtoWamp-> www-> mysitefolder

Структура каталогов на моем живом сайте

public_html (это моя корневая папка) -> папка mysite

Я также мог видеть, что rewrite_module был включен с моим живым сервером (вот что говорит мой хостинг bluehost, и я думаю, это правда)

Так как я очень хорошо прошёл крайний срок, мне интересно решение. Пожалуйста, дайте мне знать, если кто-нибудь из вас, ребята, есть идеи.

Заранее спасибо.

С уважением, Ашок Шринивасан.

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Я обнаружил корень проблемы. Все это время это был не .htaccess, не httpd.conf и не bluehost, это был не бог никого, а настоящий преступник - Mr.CodeIgniter.

Если вы посмотрите на Router.php, расположенный внутри system / library, то вы найдете строку под номером 88, где

$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']);

если вы заметите в конце троичного файла, что принудительное выполнение операции strtolower для имени контроллера. Я удалил этот метод и просто позволил использовать исходное имя, изменив строку на эту.

$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : $this->routes['default_controller'];

Хорошо, но что здесь такого? Да, это имеет большой смысл прямо сейчас. Мой локальный сервер был установлен в Windows, а мой рабочий сервер был размещен на Unix-сервере. Так как очень хорошо известно, что Windows - мягкий человек, который не особо заботится о чувствительности к регистру, а Unix очень внимателен.

Все имена контроллеров в моем проекте были в режиме заглавных букв, реальная проблема возникла здесь. Кроме того, я пошел в мой rout.php, лежащий в приложении / config, где я исправил проблемы этой перспективы.

Наконец-то я теперь могу разместить свой сайт. Спасибо всем, кто вложил свои головы в это после прочтения моего вопроса.

С уважением,

Ашок Шринивасан.

0 голосов
/ 18 мая 2011

У меня была такая же проблема в вашем httpd.conf

, вам нужно найти такую ​​строку

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

Измените ее на

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride All
</Directory>

Это всеэто заняло у меня

...