经过一遍又一遍地阅读燃料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 = null
和index_file = null
。
任何帮助表示赞赏!
答案 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]
这样可以确保所有资源都重定向到公共资源。因此,所有不公开的东西都是绝对安全的。