如何在Laravel中重定向到公共文件夹

19

你使用的是nginx还是apache? - Ravan Scafi
5个回答

27

关于 htaccess 的内容:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !project/public/
RewriteRule (.*) /project/public/$1 [L]

将其放入您的 public_html/ 或 www/ 文件夹中,该文件夹是 example.com/ 的根目录。


1
不知何故,使用localhost作为URL无法正常工作。(我认为问题在第三行,但不确定原因) - Ben Fransen
正如@BenFransen在上面所说,这在我的本地主机上没有起作用。只是将其更改为开发Linux机器的主机名,现在它可以正常工作了。 - cdsaenz

9

将/server.php重命名为index.php


3
这个方法可以使用,但需要修改所有 CSS 和 JS 文件的路径。相比于使用 .htaccess 的解决方案不太实用。 - Nebster

0

我创建了这个 PHP 脚本并将其放置在 Laravel 目录的根目录中:

    $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    header("Location: " . $actual_link . "public/index.php");


0

为了在 Laravel 应用程序(版本 >8)中的默认域上提供公共目录,您可以按照以下步骤操作:

进入 Laravel 应用程序的根目录(通常命名为 public_html)。 创建一个名为 .htaccess 的文件。确保您已打开显示隐藏文件的选项。如果您看不到该文件,请单击右上角的“设置”并切换“显示隐藏文件”或“显示点文件”。 打开您创建的 .htaccess 文件,并添加以下代码:

<IfModule mod_rewrite.c>     <IfModule mod_negotiation.c>         Options -MultiViews -Indexes     </IfModule>
    RewriteEngine On

    # Handle Authorization MemberHeader
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Remove public URL from the path
    RewriteCond %{REQUEST_URI} !^/public/
    RewriteRule ^(.*)$ /public/$1 [L,QSA]

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

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


-1

重写引擎开启 重写条件 %{REQUEST_URI} 不是以public开头 重写规则 ^(.*)$ 转发到 public/$1 并结束 [L]


目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接