1

在一遍又一遍地阅读 Fuel PHP 的安装说明(我很喜欢)之后,我无法弄清楚如何在没有显示 public/ 的 url以及不从 docroot 中移动燃料文件夹的情况下使应用程序工作。(所以它都是自包含的)。

我的设置是这样的:

/Users/AeroCross/Sites(这是 MAMP 加载所有文件的地方,即 localhost) /Users/AeroCross/Sites/projects/mariocuba(这是 Fuel 应用程序的 webroot)

其中包含:

    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>

public文件夹内的 .htaccess :

<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文件配置了 abase_url = nullindex_file = null.

任何帮助表示赞赏!

4

3 回答 3

2

从 /mariocuba 中删除现有的 .htaccess 文件,将 /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#/manual

于 2012-08-15T15:53:55.783 回答
1

在根目录中添加一个 .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 上传到主机后,您需要对其进行编辑(因为它无法动态计算。

于 2012-08-16T18:29:27.167 回答
0

如果您想隐藏公用文件夹下的所有内容(我经常这样做),请将其用作根目录中的内容:

RewriteEngine on
RewriteRule ^(.*) public/$1 [L]

这确保所有资源也被重定向到公共。所以所有不公开的东西都是绝对安全的。

于 2012-08-14T15:49:09.580 回答