403 запрещено с URI-маршрутизацией в Codeigniter - PullRequest
3 голосов
/ 05 января 2012

Я пытаюсь настроить маршрутизацию на страницу на моем сайте с помощью Codeigniter, но я просто получаю 403. Я не могу понять почему.

Код в файле конфигурации маршрутов:

$route['photo/(:num)'] = "viewphoto/view/$1";
$route['photo'] = 'photo';

$route['photos'] = "photospage/index";
$route['photos'] = 'photos';

$route['default_controller'] = 'homepage';
$route['homepage'] = 'homepage';

При переходе на mysite.com/photo/2 (например) он работает нормально, как и домашняя страница.Но когда я захожу на mysite.com/photos, я просто получаю сообщение об ошибке 403 Forbidden.

Я не могу разобраться, маршрутизация настроена точно так же, как и маршрутизация mysite.com/photo/2.

Контроллер, на который он указывает, называется страницей фотографий, а функция внутри него называется индексной.

Если я захожу на mysite.com/photos/index, он работает, хотя ...

Любая помощь наиболее ценится:)

РЕДАКТИРОВАНИЕ:

Измените файл конфигурации маршрутов на следующий, но он все равно не работает, когда я захожу на mysite.com/photos.Я изменил функцию контроллера на «просмотр» вместо «индекс», но он все равно не будет работать: (

$route['photos'] = "photos/view";
$route['photo/(:num)'] = "viewphoto/view/$1";
$route['default_controller'] = 'homepage';

домашняя страница и photo / $ id по-прежнему работают нормально.

Ответы [ 3 ]

4 голосов
/ 05 января 2012

Правило перезаписи должно быть следующим:

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

Необходимо удалить запись index.php из вашей /application/config/config.php

. 403 запрещено ошибка может быть связана с ошибкой .htaccess перезаписи.

2 голосов
/ 05 января 2012

ОК, давайте посмотрим на них по одному (при условии, что ваш домен - «example.com», а у вас есть «index.php», скрытый через «.htaccess»):

$route['photo/(:num)'] = "viewphoto/view/$1";

Этобудет захватывать любой URL, как это: http://example.com/photo/36 и направлять его к контроллеру /application/controllers/viewphoto, вызывать метод view и передавать его в качестве параметра.


$route['photo'] = 'photo';

Это захватитлюбой URL-адрес, подобный следующему: http://example.com/photo, перенаправьте его на контроллер /application/controllers/photo и вызовите метод index без параметров.


$route['photos'] = "photospage/index";

Это приведет к получению любого URL-адреса следующим образом: http://example.com/photos и направьте его к контроллеру /application/controllers/photospage и вызовите метод index без параметров.


$route['photos'] = 'photos';

Это позволит получить любой URL-адрес, подобный следующему: http://example.com/photos и направить его вконтроллер /application/controllers/photos и вызовите метод index без параметров. Этот маршрут никогда не будет вызван, потому что он дублирует тот, который находится прямо перед ним


$route['default_controller'] = 'homepage';

Это захватит любой URL, который не был пойман до сих пор, и направит его к/application/controllers/homepage контроллера и вызовите метод index без параметров.


$route['homepage'] = 'homepage';

Это захватит любой URL-адрес, подобный следующему: http://example.com/homepage и направит его на контроллер /application/controllers/homepage, ивызовите метод index без параметров.

Я предполагаю, что это связано с отсутствием метода index в контроллерах.Если это не так, то нам нужно просмотреть содержимое файла .htaccess.

0 голосов
/ 22 сентября 2014

Эта проблема может возникнуть, если у вас есть каталог с именем, идентичным маршруту, который выдает ошибку 403. Удалите или переименуйте каталог, и маршрут будет работать.

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