2

我将一个 laravel 应用程序部署到 Godaddy 主机中。我使用来自http://forums.laravel.io/viewtopic.php?id=1258的解决方案 2

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

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

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

RewriteCond %{REQUEST_URI} ^public
RewriteRule ^public/(.*)$ $1 [L]

或者,有什么方法可以设置 Godaddy 托管,以便我可以将公用文件夹设置为域的 documentroot?

谢谢。

4

2 回答 2

6

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

RewriteRule ^public/(.*)$ $1 [R,L]

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

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

把所有东西放在一起,包括来自 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]
于 2013-04-20T17:04:56.270 回答
0

我们决定关闭 godaddy 托管帐户并转移到 a2hosting,我可以将 laravel 文件夹放在 public_html 文件夹之外的主目录中。

于 2013-05-02T16:46:53.313 回答