Я действительно расстроен.
Раньше все работало нормально на локальном хосте Windows 7, но после того, как я переместил проект codeigniter на сервер Ubuntu, работающий на виртуальной коробке, все стало так сложно.
Сервер Ubuntu, работающий на виртуальном компьютере, имеет IP-адрес, скажем, 127.0.0.1, а IP-адрес хоста — 127.0.0.2.
В виртуальной коробке я сопоставил ip хоста и ip гостя с помощью адаптера NAT.
Таким образом, я могу получить доступ к гостевому IP-адресу хост-браузера.
В config.php base_url
это так $config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'];
Итак base_url
является http://127.0.0.1
и контроллер по умолчанию $route['default_controller'] = 'login';
В хост-браузере страница по умолчанию из контроллера по умолчанию может быть загружена идеально, но она не применяется к остальным страницам, доступ к которым осуществляется с помощью base_url, страницы не могут быть найдены на сервере, когда они на самом деле там.
<form name="frmLogin" id="frmLogin" method="POST" action="<?php echo base_url('login/login'); ?>">
<input type="text" placeholder="Email" id="txtEmail" value="<?php set_value('txtEmail') ?>" name="txtEmail">
<input type="password" placeholder="Password" id="txtPassword" value="<?php set_value('txtPassword') ?>" name="txtPassword">
<a href="#" class="forgot">forgot password?</a>
<input type="submit" value="Sign In" name="btnLogin" id="btnLogin">
</form>
В приведенной выше форме, контроллер login/login
не может быть найден.
Как я могу установить route.php, чтобы все страницы могли быть доступны с помощью base_url?
в config.php
$config['base_url'] = '';
Мне удалось решить мою проблему, эта проблема возникла потому, что в Unix имя файла чувствительно к регистру, а в Windows — нет. Мне пришлось переименовать контроллер и имя модели, начиная с заглавной буквы в системе Unix