我正在尝试将我的 Laravel(Laravel Framework 7.28.3)部署到 Cpanel,但出现 404 错误。 我将项目上传到 /public_html,修改了 index.php 文件以指向正确的文件(如下所示)。 我认为index.php 文件中一定有一些错误,但无法弄清楚。 这是我第一次问我的问题(经过多次搜索),所以希望我能得到答案!
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
这是我在文件管理器中的文件结构:
ln -s /laravel/public/* public_html
这是我在 2023 年发现的简单方法
设置 1:- 将文件上传到 Cpanel root 目录 – 而不是 public_html。
设置 2:- 打开该文件夹并将公共文件夹的内容移动到 cpanel 的 public_html .
设置 3:- 导航至 public_html 文件夹并找到
index.php
文件。右键单击它并从菜单中选择代码编辑器。
并更改此行
require __DIR__.'/../folderName/vendor/autoload.php';
$app = require_once __DIR__.'/../folderName/bootstrap/app.php';
注意:- folderName 这里位于 Laravel 应用程序所在的根目录中
现在您的所有请求都将进入 public_html 文件夹
index.php
并且此文件将包含 require __DIR__.'/../folderName/vendor/autoload.php;
并运行 laravel 应用程序
/laravel
/public_html/index.php
内侧
index.php
require __DIR__.'/../laravel/vendor/autoload.php';;
$app = require_once __DIR__.'/../laravel/bootstrap/app.php'; // here laravel is folder name
在您的 public/.htaccess 文件中替换下面给出的代码。确保您将项目上传到根 public_html 文件夹中。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
您需要确保您的应用程序位于 public_html 之外的文件夹中。
然后您需要对应用程序内公共目录中的所有内容建立一个符号链接。该符号链接应放置在您的 public_html 中。
这样您的业务逻辑就无法从外部获得,只能从您自己的应用程序获得。
实际上,建议使用 git 克隆您的应用程序,然后按照文档中的步骤安装它。 (https://laravel.com/docs/7.x/installation)