我已经设置了我的 VPS 服务器并正在尝试设置一个 Laravel 项目。我有一个/public_html/
带有 index.html 的文件夹,在访问网站 URL 时会显示该文件夹。
- 我有一个 laravel 项目:
/public_html/project_one/
- 原始 index.php 位于
/public_html/project_one/public/index.php
我希望该网站默认显示给 Laravel project_one,但是从昨天开始,我在 Google 上搜索了 4 个小时,我在 stackoverflow 上尝试了所有解决方案,但没有任何效果......我想我已经尝试了 10 多个版本的 .htaccess 我可以找到.
问题:
有谁知道如何在里面设置 .htaccess/public_html/
以便它重定向到我的 Laravel 项目?
我虽然需要将我的 Laravel 文件夹上传到:/public_html/project_one/
但是有更好的位置吗?
我希望主 url 显示 Laravel 项目。Laravelwww.mainurl.com
的project_one/public/index.php
文件也是如此。我不想/project_one/
被写在网址里!
只是出于好奇,如果我现在访问:www.mainurl.com/project_one
我得到一个403 禁止。
失败的解决方案
在 /public_html/ 我尝试添加 .htaccess :
DirectoryIndex index.php
#Redirect to /project_one/public if you haven't already and the IP is okay
RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.4*
RewriteCond %{REQUEST_URI} !^/project_one/public
RewriteRule ^(/lucaphoto)?(.+) /project_one/public$2 [L]
#if IP does not match and you ARE in the folder, then Redirect to root
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4*
RewriteCond %{REQUEST_URI} ^/project_one/public
RewriteRule .? / [R=301,L]
这给了我一些非常奇怪的东西:
- 在 Chrome 上:它会将我重定向到 www.mainurl.com/project_one -> 然后给我一个 403 禁止错误。**
- 在 safari 上:它无法将我重定向到任何地方,但给了我这个错误:
禁止。您无权访问此服务器上的 /。
此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
Laravel 的原始 .htaccess 文件
顺便说一句,Laravel 在 .htaccess 中有一个原始的 .htaccess 文件/project_one/public/.htaccess
。它看起来像这样:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>