如何将 public 目录更改为 public_html 目录以供 Laravel Mix

How to change public directory to public_html directory for Laravel Mix

我正在使用 Laravel 8,我想安装 Sweet Alert。所以在下载它并将 require('sweetalert'); 添加到 bootstrap.js 之后,我 运行 命令 npm run production.

然后我将其包含在我的 master.blade.php:

<script src="{{ asset('/js/app.js') }}"></script>
@include('sweet::alert')

现在因为我已经将 public 目录从 public 更改为 public_html,Laravel asset() 函数将调用 public_html/js/app.js 和这是错误的,因为 Laravel 在 public 目录中混合生成 app.jsapp.css

所以问题是如何将 Laravel Mix 的默认生成 public 更改为 public_html

这是我的 AppServiceProvider.php:

public function register()
    {
        $this->app->bind('path.public', function(){
            return base_path() . '/public_html';
        });
    }

您可以在 webpack 配置文件中更改配置编译资产目录,默认情况下 laravel 将 webpack 设置在 webpack.config.js

这里有更多关于编译资产的文档laravel

Laravel 8 Compiling Assets

@Alfian 已经回答了你的问题。但是,当您谈论重命名 public 文件夹时,不建议您使用您要求的解决方案。使用 Laravel.

时,您不应该真正重命名 public 文件夹

但我能理解你为什么重命名它,声明默认的根文件夹。但是有更好的解决方案而不是重命名它。然后就不会再有这个问题了。

最佳解决方案: 上传 Laravel 项目,因为它位于 public_html 文件夹中。转到您的 cPanel 并输入 Domains/Addon Domains/Subdomains(您正在使用哪种类型的域)部分,只需将 Document Root 更改为 /public_html/public。你完成了。

更新:

如果它是主域或附加域,则可能没有直接更改文档根目录的选项。然后我们可以在 .htaccess 文件中添加一条规则。使用这个:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/ [L]

在 .env 中更改 ASSET_URL=https://yourdomain.com/public_html。但是将索引与 php 代码(应用程序、供应商等)

一起使用是一种不好的做法

您可以从 public 创建符号 link 来充当 public html,如下所示

ln -s /full/work/path/laravel-project/public /full/work/path/public_html

但您可能需要先删除 public_html

mv public_html tmp

我假设你的结构是

full/work/path/
   - laravel-project
       - public
   - public_html
   ...

在laravel项目的主根目录下一个文件server.php和另一个index.php

首先,删除index.php文件 之后将 server.php 文件重命名为 index.php

之后就可以直接当yourdomainname.example

使用了

来自, dhayal 信息技术网络解决方案