В настоящее время я разрабатываю веб-сайт с помощью CodeIgniter, и недавно я наткнулся на проблему маршрутизации и .htaccess.
По сути, структура моего простого веб-сайта (для простоты назовем мой проект CIExample) выглядит следующим образом:
-Главная
-О нас
-Наши услуги
-Новости
-Контакты
который я реализовал с помощью контроллера страницы. Этот контроллер имеет 5 функций, которые вызывают соответствующий вид страницы, т.е.:
Home(), который вызывает представление «Главная»,
About(), который вызывает представление «О нас» и т. д.
Раньше, чтобы получить доступ к «Домой», мне нужно было ввести http://localhost/CIExample/index.php/page/home
в окно URL-адреса, но после установки следующих маршрутов я смог удалить часть «страница» (имя класса):
$route['default_controller'] = 'page/home';
$route['home'] = 'page/home';
$route['about'] = 'page/about';
$route['service'] = 'page/service';
$route['news'] = 'page/news';
$route['contact'] = 'page/contact';
Однако сложная часть возникла, когда я попытался удалить «index.php». Я хочу иметь доступ к домашней странице, набрав http://localhost/CIExample/home
.
Поэтому я много искал на форуме CI/учебнике/переполнении стека и нашел несколько кодов для файла .htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
или http://ellislab.com/forums/viewthread/197675/#929904 < br> Я пробовал оба кода, но ни один не работает..
http://localhost/CIExample/home
направлял бы меня на 404 не найденную страницу, но http://localhost/CIExample/index.php/home
работал бы нормально.
Интересно, что пошло не так? Это мой route.php или .htaccess или оба? Спасибо.
Примечание: я также изменил свой файл config/config.php -> $config['index_page'] = '';
EDIT: Наконец-то это работает! После настройки файла config.php в папке config и установите следующие $config['uri_protocol'] = 'PATH_INFO';
(из «AUTO»).
Доступные значения:
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
Не знаю, в чем разница, но согласно одному из комментариев в http://www.jotorres.com/2011/12/removing-index-php-from-url-in-codeigniter/, тот же код может/не может работать на рабочем сервере.
Может кто объяснит причину?