4

我有一个共享主机,我正在尝试让我的 laravel 项目在它上面运行,我正在使用 voyager 到管理面板。

我将我的应用程序公用文件夹放在 /public_html 中,并将项目的其余部分放在 /public_html 的同一级别,所以它看起来像这样:

.bash_history
.bash_logout
.bash_profile
.bashrc
.cache
.cpanel
.htpasswds
logs
mail
app -> my project
public_ftp
public_html -> where my app public folder is
.ssh
tmp
etc
...

我已经设法完成了几乎所有工作,但管理面板无法正常工作。

当我访问 www.example.com/admin 时,它会转到 www.example.com/admin/login,我输入我的凭据并提交表单,在它返回到同一页面后,我检查了 Chrome 上的网络选项卡,它出现以下消息:

Request URL: http://example.com/admin/login
Request Method: GET
Status Code: 403 Forbidden

有人知道如何解决吗?

谢谢。

4

4 回答 4

2

如果您遇到任何类似的问题,请.htaccess在根文件夹中添加文件,并将下面的代码放入其中,它将开始工作

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
于 2021-10-20T17:01:32.077 回答
0

通常,您应该将 public 文件夹的文件复制到 public_html 文件夹,并将其他文件夹放在 public_html 之外,因为它对全世界都可用。

您应该修改 public/index.php 文件将以下详细信息:

//line 24
require __DIR__.'/../app/vendor/autoload.php';

// line 38
$app = require_once __DIR__.'/../app/bootstrap/app.php';

由于您在 public_html 文件夹中有公用文件夹,因此您应该再添加一个 (..)

//line 24
require __DIR__.'/../../app/vendor/autoload.php';

// line 38
$app = require_once __DIR__.'/../../app/bootstrap/app.php';

域或子域

将您的域或子域指向 {{your_domain}}/public

eg: In your case, if you visit www.abc.com it should point to /public_html/public.
for other cases, it should point to /public_html

笔记:

不要忘记更新您的 .env 文件

  1. 设置 APP_ENV=生产
  2. APP_DEBUG=假
  3. LOG_CHANNEL=daily // 被认为是好的做法
  4. 您的数据库凭据
  5. 和其他必要的改变......

权限

通常您不需要更改文件和文件夹权限。如果您需要然后将文件夹设置为 755 并将文件设置为 644

永远不要将权限设置为 777

于 2019-01-06T18:17:21.693 回答
0

对我来说,这是因为.htaccess寻找一个文件夹(这是被禁止的)而不是使用同名的 Laravel 路由/admin

在此处查看 StackOverflow: Laravel,管理控制器 - 403 Forbidden

于 2020-04-19T14:38:03.780 回答
-1

嗨,您的存储文件夹必须设置权限 777 chmod -R 777 或 sudo chown -R www-data:www-data /var/www (推荐)

于 2018-05-11T20:08:14.620 回答