Php 在godaddy主机中安装Laravel,如何防止使用.htaccess访问/公开
我将laravel应用程序部署到godaddy主机中。我使用的是来自 现在我有了一个可以使用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
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。这里有一些说明-