(я действительно надеюсь, что приложил достаточное внимание к Google и строке поиска, прежде чем публиковать это)
Я начинаю с CakePHP и только что создал свою первую модель, контроллер и view.
Когда я просматриваю http: // localhost / ~ me / MyApp / Lists , я получаю 404, и я не уверен, почему
Вот мой контроллер
set('lists', $this->List->find('all'));
}
}
?>
. Я думаю, это проблема .htaccess, но когда я захожу на http: // localhost / ~ me / MyApp / app или http: // localhost / ~ me / MyApp / index Я получаю страницу ошибки «Отсутствует контроллер». Если бы оба этих URL-адреса могли указывать на фактический файл или каталог, то
Может кто-нибудь сказать мне, почему я получу эти 404 на своих контроллерах?
Обновление для пары комментариев, оставленных ниже (см. Ответ Лео)
Мой .htacces для корня приложения
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
Мой .htaccess для веб-корня CakePHP
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Просмотрите app/webroot/index.php
и убедитесь, что пути root, app и core определены правильно.
Еще один способ (хотя я сомневаюсь, что это ваша проблема) — добавить RewriteBase /~me
ко всем вашим файлам htaccess (один находится в корневом каталоге вашего сайта, один в app
и один в каталоге webroot
).
Мне кажется, у вас не работает mod_rewrite должным образом. Создайте файл phpinfo.php, содержащий только следующее:
<?php echo phpinfo() ?>
Поместите его в webroot, затем откройте его как http://localhost/~me/MyApp/phpinfo.php
В браузере нажмите ctrl-f и найдите «переписать». Если его нет, то он не настроен.
Ваш URL должен быть http://localhost/~me/MyApp/lists со строчными буквами «списки». И URL-адрес http://localhost/~me/MyApp/app и http://localhost/~me/MyApp/index приведет к отсутствию страницы контроллера, потому что если вы используете . htaccess, все запросы будут обрабатываться app/webroot/index.php.