Public和Fuel文件夹位于同一子目录中,但URL中没有public /

时间:2012-08-14 01:11:37

标签: php apache .htaccess fuelphp fuelphp-routing

经过一遍又一遍地阅读燃料PHP的Installation Instructions(我很喜欢),我无法弄清楚如何让应用程序工作而不显示公开/ ,而不从docroot移动燃料文件夹。 (所以它都是sefl-contained)。

我的设置是:

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

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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上传到主机后进行编辑(因为无法动态计算。

答案 2 :(得分:0)

如果你想隐藏公共文件夹下的所有内容(我做了很多),请将其作为根目录中的一个:

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

这样可以确保所有资源都重定向到公共资源。因此,所有不公开的东西都是绝对安全的。