404 дается при попытке доступа к существующему контроллеру в CodeIgniter - PullRequest
1 голос
/ 07 марта 2011

Я работаю над довольно новой установкой CodeIgniter 2.0.

У меня есть htaccess-файл, содержащий этот код

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

Переходя по URL http://www.estiem.no/ESTIEM/CI/ работает, но http://www.estiem.no/ESTIEM/CI/site/index нет. Это дает 404. Контроллер Site существует и содержит метод 'index'

Есть идеи, что может быть не так?

Ответы [ 4 ]

0 голосов
/ 22 июля 2014

Попробуйте получить доступ к контроллеру с помощью: localhost / site / index.php / controller

Если это не сработает, возможно, потому что CI чувствителен к регистру

  • localhost / site / controller == c: ... \ site \ controller.php
  • localhost / SITE / controller == c: ... \ SITE \ controller.php

иначе

<?php

controller Mycontroller extends Controller {

}

?>

будет иметь имя mycontroller.php в папке контроллеров


Если ничего не помогает, замените ваш htaccess следующим:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
0 голосов
/ 07 марта 2011

Я только что заметил, что, поскольку у вас установлен CI в подпапке, вы должны учесть это в перезаписи .htaccess:

/ ESTIEM / CI /

Так что ваш .htaccess будет выглядеть следующим образом:

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

Это должно исправить (извините за позднее редактирование, из-за комментария @BrianOrtiz)

0 голосов
/ 09 апреля 2011

Это проблема htaccess, когда все передавали этот код, мы обнаружили, что многим хостам это не нравится, и вы можете взломать его с помощью? или то или иное, до тех пор, пока оно не станет похожим на мозаику (это условие), но, используя блестящий htaccess (не уверен, кто первым был, но 500 человек взяли кредит), вам никогда не придется менять его снова (ну, не никогда но это будет работать 99% времени без редактирования):

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>  

Поверьте мне, у меня были те же проблемы и я трачу часы на Google, когда мне нужно было прийти сюда или даже на CI wiki (так как это первое место, где я его видел), вы не поверите, сколько проблем решается в CI только с этим немного htaccess. они действительно должны добавить его в репо.

0 голосов
/ 07 марта 2011

Вам необходимо удалить / из index.php

RewriteRule ^(.*)$ index.php/$1 [L]
...