用户未登录时,Laravel强制重定向到公用文件夹

时间:2018-02-12 17:53:57

标签: php laravel .htaccess laravel-5 laravel-5.6

我将此规则添加到.htaccess中,以将所有请求重定向到公用文件夹:

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

这样我就可以从URI中删除public字,但mydomain.com/homemydomain.com/public/home都可以使用。

我现在实现了基本的用户身份验证,但会发生的是:

  1. 如果用户请求mydomain.com/admin已登录,则Laravel会将他或她重定向到mydomain.com/public/login而不是mydomain.com/login
  2. 当用户对自己进行身份验证时,Laravel会将他或她重定向到mydomain.com/public/admin,而不是mydomain.com/admin
  3. 基于此,我猜Laravel在某处明确指出必须在/public/whatever进行重定向。我试图找出redirect()帮助器的显式位置,但我找不到它。我的问题是:

    • 我的假设是对的吗?
    • 如果,Laravel定义必须在/public/whatever进行重定向?在哪里可以找到redirect()帮助者?
    • 如果,为什么会出现第1点和第2点?

1 个答案:

答案 0 :(得分:1)

来自docs

<强>的Apache

  

该框架附带了一个用于允许的public / .htaccess文件   没有index.php的网址。如果您使用Apache来为Laravel提供服务   应用程序,请务必启用mod_rewrite模块。

如果Laravel附带的.htaccess文件无法与您的Apache安装一起使用,请尝试以下方法:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

如果您的网站托管服务商不允许使用FollowSymlinks选项,请尝试将其替换为选项+ SymLinksIfOwnerMatch。

相关问题