默认情况下,Lumen “与Laravel相同]具有myApp/public
目录,用于放置所有公共文件(资产)。
我想将该目录路径从myApp/public
更改为myApp/src/custom/public
。我该如何做到这一点?
得到了同样的问题,并解决了。看here,也许会对您有所帮助。我已经为我的Lumen应用程序完成了此解决方案,该解决方案对我有用。
UPDATE
确定,让我们继续进行一些更改以使系统可以与您的树一起使用。
在应用程序的根目录中添加一个.htaccess
文件,因此在目录myApp\
中。写在:
RewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ src/custom/public/$1 [L,NC]
假设您已经配置了指向\Path\myApp
的虚拟主机,我们现在加入myApp\src\custom\public\
的索引文件。如果我们没有犯任何错误,那么我们应该转到指示错误的页面,告诉我们未找到bootstrap/app.php
文件。逻辑。
因此,我们必须更改目录myApp\src\custom\public
中的index.php文件:
更改此内容:
$app = require __DIR__.'/../bootstrap/app.php';
为此:
$app = require __DIR__.'/../../../bootstrap/app.php';
您现在可以直接从所需路径获得主页。
我也为此感到挣扎,并在其他地方找到了解决方法。
我想要以下目录结构:
.hosting root dir
├── lumen_app_dir <---
├── other_app_dir
├── etc...
└── public_html
└──lumen_app_public_dir <---
所以我做了以下事情:
index.php
和.htaccess
从lumen_app_dir/public
复制到lumen_app_public_dir
。在那里更改index.php
像这样:
$app = require __DIR__.'/../../lumen_app_dir/bootstrap/app.php';
$app->run($app['request']);
这里重要的部分是,我必须包括$app['reqest']
作为运行函数的参数。
并且它可以在默认.htaccess
文件中进行任何更改。我可以通过server.dev/lumen_app_public_dir
您可以像这样使用IoC容器覆盖您的公共目录:
App::bind('path.public', function()
{
return base_path().'/public_html';
});
但是我更喜欢像这样使用指向公共文件夹的符号链接:
ln -s public public_html
我相信您应该将您的虚拟主机“指向”新位置(假设您将公共目录移动/重命名为所需路径)。仅在尚未以这种方式配置服务器时才需要。
然后从您的新位置打开index.php并“修复” bootsrap / app.php的路径
然后从Lumen基本目录中打开server.php,并在找到提到的“ public”的两个位置中编辑路径。
并没有真正测试过,但是看起来应该可以。试试看。
一种解决方案是在appServiceProvider.php注册方法中绑定公共路径:
$app->bind('path.public', function() {
return __DIR__; });
一种可靠的方法是进入您的public_html / index.php!我正在使用Lumen 6.x,它可以正常工作。