此问题已在此处有答案:
How to make public folder as root in Laravel?(3个答案)
昨天关门了。
在我的Laravel项目中,应用程序根目录中的.htaccess
重定向到/public
。页面加载,我可以通过Web应用程序导航。但是https://myproject.com/public/public/mysite
显示在URL中。
当我刷新页面时,我得到一个404错误,因为myproject.com/public/public/
当然不存在。当我删除public/public
时,laravel立即重定向回https://myproject.com/public/public/mysite
。public/public
从何而来?我试了一些。htaccess配置,检查.env
文件,但它不存在逻辑原因,我为什么应用程序重定向到public/public/
.
谁能帮帮我?
root中的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
.htaccess in /public
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 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
RewriteRule ^ index.php [L]
</IfModule>
.env APP_URL
APP_URL=https://example.com
有人有主意吗?如果你需要更多的信息,问我。Laravel 9.2
PHP 8.2.4
2条答案
按热度按时间3okqufwl1#
miken 32建议:
Web服务器文档根目录必须是公共目录。Laravel是一个。htaccess文件已经公开了,不要更改它。Laravel不带一个。应用程序根目录中的htaccess文件。把它拿走-miken 32
您的Web服务器需要正确配置。此分类下一篇:miken 32
完全正确。
在Strato虚拟主机中,必须在“Webspace”菜单选项卡中创建域的文件夹。然后必须将域设置为所需的根目录。我在“设置”(齿轮)下的“域”菜单选项卡中找到了这个。在我的例子中,我不得不选择
my-created-domainfolder/public
。在此之后,
php artisan route:clear
,php artisan cache:clear
和composer dump-autoload
都可以作为aspected工作。z18hc3ub2#
你可以删除。htaccess,并将此代码添加到您的根目录。htaccess,这不会让.env可以从URL访问,并将解决您当前的问题。