如何更改流明中的公共目录路径?

问题描述 投票:2回答:5

默认情况下,Lumen “与Laravel相同]具有myApp/public目录,用于放置所有公共文件(资产)。

我想将该目录路径从myApp/public更改为myApp/src/custom/public。我该如何做到这一点?

lumen
5个回答
2
投票

得到了同样的问题,并解决了。看here,也许会对您有所帮助。我已经为我的Lumen应用程序完成了此解决方案,该解决方案对我有用。

UPDATE

确定,让我们继续进行一些更改以使系统可以与您的树一起使用。

  1. 在应用程序的根目录中添加一个.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文件。逻辑。

  1. 因此,我们必须更改目录myApp\src\custom\public中的index.php文件:

    更改此内容:

    $app = require __DIR__.'/../bootstrap/app.php';
    

    为此:

    $app = require __DIR__.'/../../../bootstrap/app.php';
    

您现在可以直接从所需路径获得主页。


3
投票

我也为此感到挣扎,并在其他地方找到了解决方法。

我想要以下目录结构:

.hosting root dir
 ├── lumen_app_dir <---
 ├── other_app_dir
 ├── etc...
 └── public_html
     └──lumen_app_public_dir <---

所以我做了以下事情:

  1. index.php.htaccesslumen_app_dir/public复制到lumen_app_public_dir
  2. 在那里更改index.php像这样:

    $app = require __DIR__.'/../../lumen_app_dir/bootstrap/app.php';
    
    $app->run($app['request']);
    

    这里重要的部分是,我必须包括$app['reqest']作为运行函数的参数。

并且它可以在默认.htaccess文件中进行任何更改。我可以通过server.dev/lumen_app_public_dir

访问Lumen安装

2
投票

您可以像这样使用IoC容器覆盖您的公共目录:

App::bind('path.public', function()
{
    return base_path().'/public_html';
});

但是我更喜欢像这样使用指向公共文件夹的符号链接:

ln -s public public_html

0
投票

我相信您应该将您的虚拟主机“指向”新位置(假设您将公共目录移动/重命名为所需路径)。仅在尚未以这种方式配置服务器时才需要。

然后从您的新位置打开index.php并“修复” bootsrap / app.php的路径

然后从Lumen基本目录中打开server.php,并在找到提到的“ public”的两个位置中编辑路径。

并没有真正测试过,但是看起来应该可以。试试看。


0
投票

一种解决方案是在appServiceProvider.php注册方法中绑定公共路径:

$app->bind('path.public', function() {
     return __DIR__;  });

一种可靠的方法是进入您的public_html / index.php!我正在使用Lumen 6.x,它可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.