【问题标题】:How to change public directory to public_html directory for Laravel Mix如何将公共目录更改为 Laravel Mix 的 public_html 目录
【发布时间】:2022-01-12 18:24:10
【问题描述】:

我正在使用 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_html,Laravel asset() 函数将调用 public_html/js/app.js,这是错误的,因为 Laravel Mix 在 @987654335 中生成了 app.jsapp.css @目录。

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

这是我的AppServiceProvider.php

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

【问题讨论】:

  • Laravel 假设公共目录名为 public。改变它是个坏主意。
  • 你不能创建一个从 public_html 到 public 的符号链接吗?这将解决您的问题而不会产生其他问题
  • @EliasSoares 我不明白符号链接的意思!请您再解释一下好吗?
  • @nitinos Mix 对此内置解决方案。我在下面添加了一个答案。
  • 检查符号链接是如何在这里使用的:config 和其他东西在这里:laravel mix 这将帮助你理解事物加上符号链接实际上是一个符号链接,当你有多个时非常方便框架安装。通过创建符号链接,您可以在不更改实际名称的情况下为目录创建别名。在此处查看 symlink

标签: php laravel laravel-8 laravel-mix sweetalert


【解决方案1】:

@Alfian 已回答您的问题。但是,当您谈论重命名 public 文件夹时,不建议使用您要求的解决方案。在使用 Laravel 时,您不应该真正重命名您的公用文件夹。

但我可以理解你为什么重命名它,声明默认根文件夹。但是有更好的解决方案而不是重命名它。那么也就不会有这样的问题了。

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

更新:

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

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

【讨论】:

    【解决方案2】:

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

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

    Laravel 8 Compiling Assets

    【讨论】:

      【解决方案3】:

      在 .env 中更改 ASSET_URL=https://yourdomain.com/public_html。但是将索引与 php 代码(应用程序、供应商等)一起使用是一种不好的做法。

      您可以从公共创建符号链接以充当公共 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
         ...
      

      【讨论】:

        【解决方案4】:

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

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

        之后就可以直接作为yourdomainname.example使用了

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

        【讨论】:

          猜你喜欢
          • 2021-08-10
          • 2018-11-19
          • 2012-09-26
          • 2017-06-14
          • 1970-01-01
          • 2017-07-04
          • 1970-01-01
          • 2018-09-27
          • 2021-06-02
          相关资源
          最近更新 更多