У меня есть простая платформа веб-хостинга. Я размещаю приложение Codeigniter на / var / www / html
это означает, что это структура файла:
html
|-application
|---controllers
|---models
|---views
|---config
|-public
|-system
|-index.php
|-.htacess
Мой файл .htaccess выглядит так:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
В моем файле config.php у меня есть контроллер корневого представления по умолчанию как:
$config['base_url'] = 'http://www.example.com/';
В то время как в моем файле rout.php, у меня есть
$route['default_controller'] = "home"
Поэтому, естественно, когда я открываю www.mysite.com в своем браузере, я автоматически получаю home / index. Но когда я пытаюсь любой другой URL, как
www.example.com/home
www.example.com/home/index
www.example.com/admin
Я получаю ошибку 404. Это также заметно, что эта папка отлично работала на моем локальном компьютере и еще на одном удаленном сервере, который я пробовал.
Чтобы быть более точным, когда я пытаюсь www.example.com/home, я получаю эту ошибку
Not Found
The requested URL /home was not found on this server.
Мой домашний контроллер выглядит так.
class Home extends CI_Controller{
public function __construct() {
parent::__construct();
}
public function index(){
$this->load->view('home_view');
}
public function someFunction(){
echo 'In some function';
}
}
Я не думаю, что это помогает, но добавление index.php к URL-адресам, кажется, открывает страницы, как и ожидалось. Так
www.example.com/controller/function (DOES NOT WORK)
www.example.com/index.php/controller/function (WORKS)
Любая помощь, пожалуйста?
Вам нужно указать действие для разных URL в файле маршрута.
Как и для site.com/search, добавьте это перед $ route [‘default_controller’] = «home»,
$route['search'] = "home/search"
Это означает, что вы создадите функцию поиска в вашем домашнем контроллере, которая будет загружать файлы для просмотра по указанному URL.
Других решений пока нет …