【问题标题】:Laravel Deployment on Shared Hosting - 404 Error共享主机上的 Laravel 部署 - 404 错误
【发布时间】:2016-04-10 09:50:35
【问题描述】:

我正在尝试在共享主机 cpanel 上部署我的 laravel 5.1 应用程序。但我收到 404 错误。

404

找不到

在此服务器上找不到请求的资源!

要上传项目,我会克隆项目目录并通过他们的 FileManger 将其上传到 cpanel。然后将 Public 文件夹项移动到 Public_Html。

我的.htaccess文件内容如下图:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
       RewriteBase /

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我还在 index.php 中更改了以下几行:

require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

require __DIR__.'/../objecsys/bootstrap/autoload.php';
$app = require_once __DIR__.'/../objecsys/bootstrap/app.php';

这种部署方法可能有什么问题?

【问题讨论】:

  • 我猜你可以在 cPanel 中更改文档根目录。只需将您的域指向您应用的公用文件夹。 /user/public_html/app/public
  • 介意分享你的部署目录结构(确定)?如果index.php 找不到它的组件,它不应该只抛出 404 错误 - 所以基本上它与服务器配置相关。你的.htaccess 很好,我猜是香草味的。
  • 我建议为 Laravel 应用程序使用 VPS。效率更高。
  • @SonuJoshi 你能指导我一点关于如何在 cPanel 中 chag 文档根目录吗?
  • @Tezla 让我来一张目录结构的快照...

标签: .htaccess laravel deployment laravel-5 laravel-5.1


【解决方案1】:

尝试在 .env 中设置空的 APP_URL

APP_URL=http://

【讨论】:

    【解决方案2】:

    这是 htaccess 问题

    在您的网络项目的根文件夹中获取一个.htaccess 文件。

    并在里面放入如下代码,

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
    
        RewriteEngine On
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [L,R=301]
    
        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    </IfModule>
    

    刷新页面并查看

    我的问题解决了

    当我将 laravel 项目上传到服务器时,我的应用程序只需打开默认路由

    但是我在 laravel 中的所有其他网络路由都有错误

    错误是:404

    laravel : 404 Not Found 在此服务器上找不到请求的资源!

    【讨论】:

    • 这应该是公认的答案。谢谢你,你节省了我 2 小时的时间。爱你。没有同性恋。
    • @saber tabatabaee yazdi 我有同样的问题兄弟。唯一的区别是我使用的是 laravel 8,在我的 public_html 文件夹中,我有另一个文件夹,我将 index.php 放在其中。你能帮我解决这个问题吗?这是链接stackoverflow.com/questions/66647560/…。谢谢。
    【解决方案3】:

    在 cPanel 中部署 Laravel 应用程序非常简单(如果您在附加域上部署)。

    在 cPanel 中,继续附加域,然后创建一个新的附加域。

    默认情况下,cPanel 会以这种方式为您生成文档根目录:

    public_html/mydomain.com
    

    改成:

    public_html/mydomain.com/MyLaravelApp/public
    

    现在上传你的 Laravel 项目到 public_html/mydomain.com 目录下。

    它应该看起来像这样。

    如果您已经有一个附加域。转到修改附加域(就在创建附加域下方)

    单击文档根列中的编辑图标并更改您域的文档根。

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2020-11-10
      • 2018-03-10
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多