我已经设置了我的VPS服务器,并且正在尝试设置Laravel项目。
我有一个带有index.html的/public_html/
文件夹,该文件夹在访问网站网址时显示。
/public_html/project_one/
/public_html/project_one/public/index.php
我希望网站默认显示给Laravel project_one,但从昨天开始我用谷歌搜索了4个小时,我在stackoverflow上尝试了所有解决方案,没有任何效果......我想我已经尝试过10个版本的.htaccess我能找到。
有谁知道如何在/public_html/
内设置.htaccess,以便重定向到我的Laravel项目?
我虽然需要上传我的Laravel文件夹:/public_html/project_one/
但是有更好的位置吗?
我希望主网址显示Laravel项目。所以www.mainurl.com
是Laravel的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]
这给了我一些非常奇怪的东西:
禁止。您无权访问此服务器上的/。
此外,尝试时遇到404 Not Found错误 使用ErrorDocument来处理请求。
顺便说一下,Laravel在/project_one/public/.htaccess
有一个原始的.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>
答案 0 :(得分:0)
实际的laravle应用程序(公共文件夹以外的任何应用程序)不应该是公共的,因此不应放在public(public_html)文件夹中。
我实际上尝试了很多东西以获得类似于你的设置运行的东西。我的结论是 - 只有更改 .htaccess 文件才足以在公共文件夹中运行laravel。
快速设置laravel应用程序的最简单方法是使用直接指向公用文件夹的子域。
www.mainurl.com /* points to .../public_html/ */
laravel.mainurl.com /* points to .../laravel/public/ OR ( but not good ) */
/* points to .../public_html/my-project/public/ */
您实际需要做的是将域/子域的根目录更改为指向另一个文件夹 - 然后不需要更改.htaccess。
<强>更新强>
如果您的网站 www.example.com ,并且您希望在打开此网站时显示您的laravel应用,则有两种选择。
将laravels公共文件夹的内容放到公共html中,并更改引用以适合public_html而不是公共文件夹。
如果服务器上的文件结构类似于... / var / stuff /.../ public_html /然后将所有内容上传到../var/stuff/my-project,然后转到您的主机界面,进行内部重定向到../var/stuff/my-project/public文件夹,一切都会好的,不用在你的laravel代码中查找任何东西。 (除了.env之外的任何东西)
所以实际问题是您的域指向文件夹public_html,而不是您应用的公用文件夹。但是,请不要直接将您的应用程序放入public_html,将其与之并行,并更改域指向的位置。
如果您向我们提供有关您的主机的一些信息,我们可以提供指南