无法访问Laravel中共享主机中的符号链接文件



我使用hostinger,在我的父托管目录中有两个文件夹

  1. 我的laravel应用程序文件夹
  2. public_html

public/index.php中我更改了

  1. require __DIR__.'/../vendor/autoload.php';require __DIR__.'/../my-laravel-app-folder/vendor/autoload.php';
  2. $app = require_once __DIR__.'/../bootstrap/app.php';$app = require_once __DIR__.'/../my-laravel-app-folder/bootstrap/app.php';

在公共/.htaccess文件中我更改了

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
Options +FollowSymLinks

# 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]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ index.php [L]
</IfModule>

从父目录/目录,我已经运行

ln -s my-laravel-app-folder/storage/app/public public_html/storage

但我仍然无法访问链接的存储文件,并出现404错误。

do符号链接

ln -s my-laravel-app-folder/storage/app/public public_html/storage

public_html/storage中删除index.php.htaccess文件,并手动将从您的laravel项目复制到public _html/sterage的index.php文件,请尝试将域路径更改为public_html/storage/public

最后我找到了解决方案,这是在创建符号链接时,我必须包含文件夹的绝对路径,而不是当前路径。例如,

  • 对于my-laravel-app-folder/storage/app/public替换为/home/u440262284/domains/mysite.com/my-laravel-app-folder/storage/app/public而是
  • 也适用于public_html/storage替换为/home/u440262284/domains/mysite.com/public_html/storage

成功了!!!