Php 在godaddy主机中安装Laravel,如何防止使用.htaccess访问/公开

Php 在godaddy主机中安装Laravel,如何防止使用.htaccess访问/公开,php,.htaccess,laravel,redirect,Php,.htaccess,Laravel,Redirect,我将laravel应用程序部署到godaddy主机中。我使用的是来自 现在我有了一个可以使用http://domain/和http://domain/public/ RewriteCond %{REQUEST_URI} ^public RewriteRule ^public/(.*)$ $1 [L] 我想关闭对http://domain/public/因此所有服务都将由http://domain 我尝试了这个.htaccess规则,但我仍然可以访问http://domain/public/ R

我将laravel应用程序部署到godaddy主机中。我使用的是来自

现在我有了一个可以使用
http://domain/
http://domain/public/

RewriteCond %{REQUEST_URI} ^public
RewriteRule ^public/(.*)$ $1 [L]
我想关闭对
http://domain/public/
因此所有服务都将由
http://domain

我尝试了这个.htaccess规则,但我仍然可以访问
http://domain/public/

RewriteCond %{REQUEST_URI} ^public
RewriteRule ^public/(.*)$ $1 [L]
或者,有没有办法设置godaddy主机,以便我可以将该域的公用文件夹设置为documentroot


谢谢。

您不仅必须重写,还必须重定向客户端。此处不需要
RewriteCond
,因为
RewriteRule
已仅限于
public/
请求

RewriteRule ^public/(.*)$ $1 [R,L]
但是现在你有一个无止境的循环,来回重写和重定向。要打破循环,您需要检测请求是否已被重写

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
把一切都放在一起,包括拉拉维尔论坛的规则

RewriteEngine on

# prevent endless loop
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

# redirect client to non-public
RewriteRule ^public/(.*)$ $1 [R,L]

# send real page to client
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^.*$ public/$0 [L]

我们决定关闭godaddy托管帐户,转到一个托管帐户,在那里我可以将laravel文件夹放在主目录中,在public_html文件夹之外。

我尝试了上述规则,但我仍然可以访问
http://domain/public/
响应代码为200的页面。如果我访问
http://domain/public
,我得到301重定向到
http://domain/public/
@donnykunia将
301
public
重定向到
public/
不是来自这些规则,而是来自。如果要承载多个Laravel实例和多个域/子域,该怎么办?您如何使用GoDaddy托管来实现这一点?@Malchesador我没有GoDaddy托管的经验,因此无法发表评论,抱歉。@Olaf Dietsche我在这里发布了一个答案:顺便说一句,GoDaddy共享托管也可以实现同样的效果,因为它们允许SSH访问,允许您访问比public_html高一级的目录。类似地,甚至可以在Godaddy上安装composer。这里有一些说明-