Laravel在godaddy托管中安装,如何防止访问/公共使用.htaccess

Don*_*nia 2 php .htaccess redirect laravel

我将laravel应用程序部署到godaddy托管中.我使用http://forums.laravel.io/viewtopic.php?id=1258中的解决方案2

现在我有一个工作的laravel应用程序,可以使用http://domain/和访问http://domain/public/

我希望关闭访问权限http://domain/public/以便所有人都可以使用http://domain

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

RewriteCond %{REQUEST_URI} ^public
RewriteRule ^public/(.*)$ $1 [L]
Run Code Online (Sandbox Code Playgroud)

或者,有没有办法设置godaddy托管所以我可以将公用文件夹设置为域的文档?

谢谢.

Ola*_*che 6

您不仅必须重写,还必须重定向客户端.在RewriteCond这里不需要,因为RewriteRule已经限制到public/只请求

RewriteRule ^public/(.*)$ $1 [R,L]
Run Code Online (Sandbox Code Playgroud)

但现在你有一个无限循环,重写和来回重定向.要打破循环,您需要检测是否已重写请求

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
Run Code Online (Sandbox Code Playgroud)

把所有东西放在一起,包括Laravel论坛的规则

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]
Run Code Online (Sandbox Code Playgroud)