【问题标题】:laravel public_html files fail to load in shared hostinglaravel public_html 文件无法在共享主机中加载
【发布时间】:2020-10-27 16:37:38
【问题描述】:

我的 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 中的项目结构:

|-- 垃圾箱
|-- 缓存
|-- laravel (没有公用文件夹的项目文件)
|-- 应用
|-- 引导
|-- 配置
.env
server.php
...以及其余文件
|-- 等
|-- 日志
|-- 邮件
|-- public_html
|-- CSS
|-- js
|-- 图片
.htaccess
index.php
...其余文件

我在 public_html 中的 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>

【问题讨论】:

  • 您可以发布您的 .htaccess 文件吗?
  • @alex hey Alex 我在问题中添加了 htaccess 文件
  • 可能是您的静态文件未加载到错误的路径。你检查你的内容的路径吗?
  • @STA 在浏览器控制台中它显示路径正确mywebsitename.com/img/image.png 并且图像已经存在但当我单击时仍然显示 404 错误

标签: php laravel cpanel


【解决方案1】:

您需要更改 .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 文件之前请先备份

【讨论】:

  • 我添加了这些行然后网站没有完全加载,''在浏览器中无法访问网站''
  • @ivan 有两个.htaccess 文件,添加到根文件夹一个
  • 我做了更改,但完全相同的问题,只有使用 CDN 调用的 css 和 js 链接有效,但 public_html 中的文件未加载
【解决方案2】:

显然问题出在文件权限上,我将文件夹设置为 755,文件设置为 644,一切都像魅力一样工作

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2019-08-01
    • 2021-10-11
    • 2018-06-21
    • 2018-04-30
    • 2020-11-06
    • 2017-04-12
    • 2023-03-23
    相关资源
    最近更新 更多