Папка 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]

Это гарантирует, что все ресурсы также перенаправляются на всеобщее обозрение. Так что все, что не публикуется, абсолютно безопасно.

Другие вопросы по тегам