Папка Public и Fuel в том же подкаталоге, но нет общедоступных / в URL
Прочитав снова и снова Инструкции по установке для Fuel PHP (которые мне очень нравятся), я не могу понять, как заставить приложение работать без URL -адреса, отображающего public /, и не перемещая топливную папку из docroot. (так что все это само по себе).
Моя установка такова:
/Users/AeroCross/Sites
(здесь MAMP загружает все файлы, т.е. localhost) /Users/AeroCross/Sites/projects/mariocuba
(это webroot приложения Fuel)
Который содержит:
mariocuba/
.htaccess
oil
fuel/
app/
core/
packages/
public/
.htaccess
.htaccess
внутри mariocuba
папка:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /public
RewriteRule ^(/)?$ index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
.Htaccess внутри public
папка:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Если я пытаюсь загрузить приложение (/Users/AeroCross/Sites/projects/mariocuba/), появляется эта ошибка:
Not found.
The requested URL /public/index.php/ was not found on this server.
Я не знаю, что здесь делать.
Я знаю, что он не предназначен для такой работы, и я знаю, что это небезопасно, но это для целей разработки и контроля версий. Что я могу сделать (с минимальной настройкой файловой системы), чтобы это работало?
Стоит отметить, что у меня есть мой config.php
файл настроен с base_url = null
а также index_file = null
,
Любая помощь приветствуется!
3 ответа
Удалите существующий файл.htaccess из /mariocuba, переместите содержимое /mariocuba/public (включая.htaccess) в / mariocuba и затем отредактируйте index.php.
Изменить:
/**
* Path to the application directory.
*/
define('APPPATH', realpath(__DIR__.'/../fuel/app/').DIRECTORY_SEPARATOR);
/**
* Path to the default packages directory.
*/
define('PKGPATH', realpath(__DIR__.'/../fuel/packages/').DIRECTORY_SEPARATOR);
/**
* The path to the framework core.
*/
define('COREPATH', realpath(__DIR__.'/../fuel/core/').DIRECTORY_SEPARATOR);
Для того, чтобы:
/**
* Path to the application directory.
*/
define('APPPATH', realpath(__DIR__.'/fuel/app/').DIRECTORY_SEPARATOR);
/**
* Path to the default packages directory.
*/
define('PKGPATH', realpath(__DIR__.'/fuel/packages/').DIRECTORY_SEPARATOR);
/**
* The path to the framework core.
*/
define('COREPATH', realpath(__DIR__.'/fuel/core/').DIRECTORY_SEPARATOR);
Это подробно описано в инструкциях по установке здесь: http://docs.fuelphp.com/installation/instructions.html
Добавьте файл.htaccess в корневой каталог и используйте следующие правила перезаписи:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /YOUR_LOCAL_PROJECT_FOLDER/public
RewriteRule ^(/)?$ index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Примечание. Вам нужно будет отредактировать.htaccess, как только вы загрузите его на хост (поскольку он не может быть рассчитан динамически.
Если вы хотите спрятать все под общедоступной папкой (что я часто делаю), используйте это как корень:
RewriteEngine on
RewriteRule ^(.*) public/$1 [L]
Это гарантирует, что все ресурсы также перенаправляются на всеобщее обозрение. Так что все, что не публикуется, абсолютно безопасно.