我的laravel(v5.8)项目在localhost上运行正常,但是在将其上传到cPanel
后,公共html中的所有图像以及CSS和JS文件均无法在浏览器中加载,并在浏览器控制台中显示错误,例如:
“无法加载our-approach.png:1资源:服务器响应 状态404()“
”无法加载资源:main.css:1 服务器响应状态为500()”
虽然框架本身可以很好地加载并且没有显示任何错误。
我将PHP更新为7.4
,并遵循了几乎所有的youtube和StackOverflow线程,但没有任何效果。
index.php已修改:
require __DIR__.'/../laravel/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
AppServiceProvider.php已修改
public function register()
{
$this -> app -> bind('path.public', function()
{
return base_path('public_html');
});
}
我在cPanel中的项目结构:
|-bin
|-缓存
|- laravel (不含公用文件夹的项目文件)
|-应用
|-引导程序
|-配置
.env
server.php
...以及其他文件
|-等
|-日志
|-邮件
|- public_html
|-CSS
|-js
|-img
.htaccess
index.php
...其余文件
我在hthtml中的htaccess文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 0 :(得分:0)
您需要更改.htaccess文件。
添加这些行
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
但是请先备份,然后再更改htaccess文件
答案 1 :(得分:0)
显然问题出在文件许可权中,我将其设置为755(文件夹)和644(文件),一切工作都像魅力一样