проблема маршрутизации в кодеригнере

Я новичок в CodeIgniter и маршрутизации.

У меня есть контроллер Login которого index() загружает представление, чтобы ввести имя пользователя / пароль. В представлении форма имеет action="login/authenticate" . Login-> authenticate () определяет, является ли логин действительным или нет. Если это допустимо, redirect('lobby') , если не redirect('login')

routes.php:

 $route['default_controller'] = "login" 

config.php:

 $config['base_url'] = "http://localhost/dts/"; $config['index_page'] = "index.php"; 

Проблема в том, что когда я перехожу к http://localhost/dts/ , нажмите login, я правильно (?) Перенаправлен на http://localhost/dts/login/authenticate но браузер говорит, что Object not found! , Но когда я перехожу к http://localhost/dts/index.php/ (с завершающим косой чертой), он работает правильно (я перенаправляюсь на http://localhost/dts/index.php/login/authenticate и записывается в журнал в)

Я попытался удалить «index.php» с помощью .htaccess:

 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] 

и он больше не будет открывать даже http: // localhost / dts /

Я в замешательстве. Что происходит?

Проблема связана с последней строкой вашего файла .htaccess.

Поскольку ваше приложение находится в подкаталоге («dts»), передняя косая черта перед «index.php» не будет работать. Попробуйте удалить его, чтобы ваш файл выглядел так:

 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L] 

Следуйте этой статье в вики CodeIgniter, чтобы правильно настроить свой .htaccess следующим образом:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #Removes access to the system folder by users. #Additionally this will allow you to create a System.php controller, #previously this would not have been possible. #'system' can be replaced if you have renamed your system folder. RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] #When your application folder isn't in the system folder #This snippet prevents user access to the application folder #Submitted by: Fabdrol #Rename 'application' to your applications folder name. RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] #Checks to see if the user is attempting to access a valid file, #such as an image or css document, if this isn't true it sends the #request to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> <IfModule !mod_rewrite.c> # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. # Submitted by: ElliotHaughin ErrorDocument 404 /index.php </IfModule> 

Вы изменили это в своей конфигурации:

 $config['index_page'] = "index.php"; 

К этому:

 $config['index_page'] = ""; 

Кроме того, прочитайте это сообщение от Jamie Rumbelow:

http://jamieonsoftware.com/blog/entry/the-best-codeigniter-.htaccess

Thats .htaccess, который я всегда использовал, и он отлично работает для меня.