Estoy usando Laravel 8 y quería instalar Sweet Alert. Entonces, después de descargarlo y agregar require('sweetalert'); a bootstrap.js , ejecuté el comando npm run production .
Luego he incluido esto en mi master.blade.php :
<script src="{{ asset('/js/app.js') }}"></script> @include('sweet::alert') Ahora, debido a que había cambiado mi directorio público de public a public_html , la función Laravel asset() llamaría a public_html/js/app.js y esto es incorrecto porque Laravel Mix generó app.js y app.css en el directorio public .
Entonces, la pregunta es ¿cómo puedo cambiar la generación predeterminada de Laravel Mix que es public a public_html ?
Aquí está mi AppServiceProvider.php :
public function register() { $this->app->bind('path.public', function(){ return base_path() . '/public_html'; }); }@Alfian ha respondido a su pregunta. Pero la solución que solicitó no se recomienda cuando habla de cambiar el nombre de la carpeta pública . Realmente no debería cambiar el nombre de su carpeta pública mientras usa Laravel.
Pero puedo entender por qué le cambió el nombre, para declarar la carpeta raíz predeterminada. Pero hay mejores soluciones en lugar de cambiarle el nombre. Y entonces tampoco habrá tal pregunta.
La mejor solución: cargue el proyecto Laravel tal como está en la carpeta public_html . Vaya a su cPanel e ingrese la sección Domains/Addon Domains/Subdomains (qué tipo de dominio está usando) y simplemente cambie la raíz del documento como /public_html/public . Estás listo.
Actualizar:
Si es un dominio principal o un dominio adicional, es posible que no haya una opción directamente para cambiar la raíz del documento. Entonces podemos simplemente agregar una regla en el archivo .htaccess. Utilizar esta:
RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L]Puede cambiar el directorio de activos compilados de configuración en los archivos de configuración del paquete web, de forma predeterminada, laravel establece el paquete web en webpack.config.js
Aquí más documentación sobre la compilación de activos laravel
En .env cambie ASSET_URL=https://yourdomain.com/public_html . Pero es una mala práctica tener un índice junto con el código php (aplicación, proveedor, etc.)
Puede crear un enlace simbólico desde el público para que actúe como html público como sigue
ln -s /full/work/path/laravel-project/public /full/work/path/public_html
Pero es posible que primero deba eliminar public_html
mv public_html tmp
Supongo que su estructura sería
full/work/path/ - laravel-project - public - public_html ...