Вопрос по настройке CodeIgniter - PullRequest
1 голос
/ 17 мая 2011

Я пытаюсь заставить этот URL работать на установке codeigniter, только что установил самую новую версию сегодня (2.0.2):

http://mydomain.com/pete/ci_test/accounts

Так что я установил свой по умолчаниюконтроллер в router.php to test.php, и внутри моего контроллера test.php у меня есть этот код:

class test extends CI_Controller {

public function index() {
    $this->load->view('test');
}

public function accounts() {
    $this->load->view('accounts');
}
}

, а затем у меня есть test.php и account.php внутри моих представлений, этозагружает представление test.php, когда я перехожу на http://mydomain.com/pete/ci_test/

Но когда я перехожу на http://mydomain.com/pete/ci_test/accounts, это дает мне 404. Я читал Приступая к работе и он говорит "По умолчанию CodeIgniterиспользует сегментный подход », а затем приводит пример, аналогичный тому, что я делаю.Но затем я читаю немного дальше: «По умолчанию файл index.php будет включен в ваш URL».Поэтому я добавил это в свой файл htaccess (расположенный по адресу mydomain.com/pete/ci_test/.htaccess):

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

Я убедился, что модуль загружается внутри httpd.conf.Это все еще не идет к моему представлению account.php.Я также пытался:

http://mydomain.com/pete/ci_test/index.php/accounts

Но еще 404, что я делаю не так?Любой совет поможет, спасибо!

Ответы [ 4 ]

2 голосов
/ 17 мая 2011

У меня возникла та же проблема, поэтому я посмотрел вокруг. Вы должны использовать этот контент .htaccess. У меня это сработало.

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
2 голосов
/ 17 мая 2011

Ваш контроллер должен быть в верхнем регистре для имени класса:

class Test extends CI_Controller {

И для доступа к нему, URL должен быть:

Редактировать Исправлена ​​подпапка теперь, когда я заметил

http://mydomain.com/pete/ci_test/test/accounts

или

http://mydomain.com/pete/ci_test/index.php/test/accounts

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

onteria_ правильно, что ваш контроллер должен быть в верхнем регистре. Это не требование, а скорее "лучшая практика".

Однако, я думаю, что имя вашего контроллера вместо имени подпапки сбивает с толку людей. Похоже, у вас есть инсталляция в папке с именем ci_test. В этом случае, чтобы получить к нему доступ, URL должен быть либо

http://mydomain.com/pete/ci_test/test/accounts

или

http://mydomain.com/pete/ci_test/index.php/test/accounts

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

Контроллер по умолчанию - это то, что загружается, когда отсутствуют сегменты URL - вот и все.

Если вы хотите, чтобы /accounts загрузил контроллер test и метод accounts, вам придется использовать маршрут примерно так:

$route['accounts'] = 'test/accounts';

В противном случае вам потребуется контроллер учетных записей или доступ к нему через /test/accounts/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...