如何将 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.js
和 app.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
@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 信息技术网络解决方案
我正在使用 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.js
和 app.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
@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 信息技术网络解决方案