无法访问共享主机上的 laravel public 文件夹

Cant' access laravel public folder on shared hosting

我最近在 OVH 共享主机上安装了一个 Laravel 应用程序(pro,所以我有 ssh 访问权限)。这是我的安装结构:

user
    app
       public
    www

站点访问在 'www' 下,所以我在那里创建了一个符号 link: ln -s /home/user/app/public /home/user/www/index.html

当我签入 Filezilla 时,symlink 正在工作并指向 laravel public 文件夹。 但是,在尝试访问该站点时,我收到 403 Forbidden 您无权访问此资源。

我做错了什么?

你的符号 link 有问题...你指向 index.html 而不是 index.php

试试这个:

ln -s /home/user/app/public /home/user/www/index.php

并创建此 .htaccess 文件并将其放入您的 laravel 安装(根)文件夹中。

 <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/ [L]
</IfModule>

我无法让它工作,顺便说一下,这不是 laravel 相关的问题,我假设 ovh 不允许符号链接到共享服务器上的受保护文件夹。真的很遗憾,但我最终在 www 文件夹中安装了 laravel 并阻止使用 .htaccess

访问根目录

您可以将 app/public 定义为根文件夹的多站点。另外,我不会 link 到 index.html 这样的文件,而是 ../app/public 这样的文件夹,例如确保 __DIR__ 在 php 中正常工作。 (顺便说一下,Laravel 没有 index.html)。

我在 OVH 共享服务器上遇到了类似的问题:403 forbidden, You don’t have permission to access this resource 在访问 Laravel 的 public 存储中的文件时。

.htaccess 调整为 allow from all 或将文件系统访问控制权限调整为 777 rwxrwxrwx 没有任何效果。

对我来说,解决方案是用相对 link ../storage/app/public

替换 php artisan storage:link 创建的绝对 link /home/accountname/www/***/storage/app/public