CodeIgniter не работает маршрут - PullRequest
3 голосов
/ 01 сентября 2011

В моем файле маршрутов есть следующие маршруты:

$route['default_controller'] = "main";
$route['404_override'] = '';
$route['testroute'] = "main";

Как вы можете видеть, все, что я хочу, это когда кто-то заходит на mydomain.com/testroute, он должен просто вернуться к контроллеру по умолчанию.Однако, когда я иду к этому, я получаю ошибку 404.Я что-то не так делаю в том, как пишу этот маршрут?

Ответы [ 3 ]

9 голосов
/ 09 июля 2012

Вы должны создать файл .htaccess в своем приложении.

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

Пожалуйста, вставьте этот код в ваш файл .htaccess.

1 голос
/ 20 декабря 2012

Слушай, это самый глупый ответ за всю историю, но это мой опыт с подобной ситуацией, которая только что случилась. Я был беспомощен, но он начал работать - вот как.

У меня есть один контроллер, вызывающий ReadController.php (класс называется так же). Маршрут был тот же:

$route['default_controller'] = "ReadController";

Вызов с www.martinjovanovic.com/DSi1.5-v01/index.php/ReadController/ - сработало. Но назвать его просто martinjovanovic.com/DSi1.5-v01/ просто не получится вообще.

Базовый URL-адрес принадлежал моему домену и папке: wwww.martinjovanovic.com/DSi1.5-v01/

Никаких изменений в htaccess вообще нет, я оставил его по умолчанию (Запретить все).

  1. Я переключил контроллер по умолчанию обратно на welcome.php.
  2. Сделал копию, назвал ее welcome2.php. Класс переименован соответственно.
  3. Изменены маршруты на welcome2. Это сработало. Тот же экран приветствия.
  4. Изменен index () внутри welcome2.php для некоторого эха («что-то»). Это сработало.
  5. Переименован в welcome2.php в read.php, соответственно. Поменял это в маршрутах. Это сработало.
  6. Скопируйте весь код из оригинального файла ReadController.php в файл read.php. Это сработало.

Вот так. То же самое начало работать.

Единственная разница между исходным файлом ReadController.php и новым файлом read.php была в первой строке. В моем новом read.php я сохранил первую строку, которая фактически отсутствовала в старом ReadController.php (мой разработчик пропустил это, я думаю):

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

Это было сразу после открытия php-тега. Это была единственная разница. Я не понимаю, почему это так важно. Может дело не в этом вообще. Тем не менее, это сработало.

И мораль этой истории такова: я начал с того, что сработало в первую очередь, и продолжал медленно менять его к тому, что мне нужно, пока оно не сработало ...

1 голос
/ 07 сентября 2011

LoneWolfPR ударил по голове своим комментарием, вы используете FastCGI, который требует другого доступа.

Можете ли вы попробовать использовать это?

https://raw.github.com/pyrocms/pyrocms/develop/.htaccess

Мне хочется предложить добавить его в CodeIgniter 2.1-dev, чтобы сохранить этот вопрос, возникающий 15 раз в день. Дайте мне знать, если он работает или не работает.

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