fuelPHP: не могу получить доступ к моим контроллерам напрямую
Я пытаюсь изучать FuelPHP, и я пришел из CI фона. Я использую этот учебник, чтобы я мог ознакомиться с этим.
http://net.tutsplus.com/tutorials/php/getting-started-with-the-fuel-php-framework/
Моя проблема в шаге 2. Когда я получаю доступ к своему простому контроллеру
http://localhost/fuel/public/index.php/hello
Я получаю ошибку 404.
* fuel - это каталог этого недавно установленного fuelPHP на моем локальном хосте.
Когда я устанавливаю этот маршрут по умолчанию, контроллер работает.
Что-то изменилось в новой версии, что вызвало это?
Вот мой.htaccess в папке /public/.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Благодарю.
1 ответ
Вы делаете это очень сложно для себя, устанавливая FuelPHP следующим образом.
Он спроектирован таким образом, что папка public является корнем документа вашего веб-сервера, а это означает, что вся необходимая информация находится за пределами корня вашего документа, а.htaccess находится непосредственно в корне вашего документа.
Не только устанавливая его целиком в корневой каталог документа, но и в подпапку этого корневого документа, вы должны изменить правила перезаписи. Начните с добавления
RewriteBase /fuel/public
публично, и посмотрите, поможет ли это. Кроме того, этот.htaccess сделан для "стандартных" установок типа Apache. Если вы запускаете что-то еще, вам может понадобиться другой.htaccess. Если вы, например, используете fcgi, получите.htaccess из репозитория 1.4/velop, он более отказоустойчив по отношению к вашему типу веб-сервера.
Последнее замечание: вы не должны использовать localhost в качестве имени хоста. Это незаконное имя во многих RFC, одно из которых является документом, который документирует использование куки. У вас будут всевозможные проблемы с сессиями с некоторыми браузерами (версиями), если вы используете "localhost". Вместо этого настройте виртуальные хосты (в любом случае лучше, чем вложенные папки) и используйте имя хоста, например, "mymachine.local".