如何以正确的方式从 laravel 5 url 重写或删除 public?

Posted

技术标签:

【中文标题】如何以正确的方式从 laravel 5 url 重写或删除 public?【英文标题】:How to rewrite or remove public from laravel 5 urls in proper way? 【发布时间】:2016-12-31 08:24:40 【问题描述】:

我正在尝试从 laravel 网址中删除 public/index,因为这是常见问题之一,因此有很多教程和答案。我也对此进行了搜索并关注了@rimon.ekjon answer,这对我来说很好用,这很简单。

将 Laravel 根文件夹中的 server.php 重命名为 index.php 并将 .htaccess 文件从 /public 目录复制到 Laravel 根文件夹。 - 而已 !! :)

我很困惑为什么我应该重命名或将某些东西从一个地方移动到另一个地方,因为文件存在于公用文件夹中是有原因的。我想展示另一个好的answer,它也遵循几乎相同的模式。

我认为,如果项目中有新要求或新功能请求,按照上述答案的步骤可能会在将来产生一些问题。

所以任何人都可以指导我是否最好从 laravel 5 中重写或删除 public/index。如果有人指导我,我将不胜感激。

【问题讨论】:

你能检查一下这些步骤吗?***.com/questions/16884947/laravel-installation/… 请注意它是否对你有帮助,但如果你能看一次,只想与你分享。 【参考方案1】:

您应该将 Web 服务器的文档/Web 根目录配置为 public 目录。这样您就不必复制/移动/删除任何内容。

对于apache,您可以查看here。

对于nginx,您可以阅读here。

【讨论】:

【参考方案2】:

我访问了您的链接,看到了非常糟糕的建议。

您无需移动或修改任何 Laravel 文件。您需要的是设置 Web 服务器。您需要将其指向 Laravel 项目根文件夹中的 public 目录。

请查看 here 获取 Apache 和 nginx 的示例配置指令。

【讨论】:

【参考方案3】:

另一种选择是将public 文件夹符号链接到服务器的根文件夹(例如/var/www/)。 This article 是如何做到这一点的绝佳指南。

在您的开发环境中,您可以使用php artisan serve

【讨论】:

这是一个糟糕的答案。 OP 应该正确配置网络服务器以从公共 laravel 文件夹中提供服务。【参考方案4】:

如果您无权访问服务器配置,这是一个完美的解决方案https://***.com/a/32580688/5015089。

【讨论】:

【参考方案5】:

在没有 htaccess 的情况下从 url 中删除 public。它也适用于 laravel 最新版本。

步骤 1. 从 public 复制所有文件并粘贴到根目录

步骤 2. 打开 index.php 文件,从路径中删除 ../,如下所示

Laravel5:

require __DIR__.'/../bootstrap/autoload.php';

require __DIR__.'/bootstrap/autoload.php';

require_once __DIR__.'/../bootstrap/app.php';

$app = require_once __DIR__.'/bootstrap/app.php';

Laravel 7:

require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

【讨论】:

以上是关于如何以正确的方式从 laravel 5 url 重写或删除 public?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:当 url 以“/”结尾时防止重定向 [重复]

如何重定向到Laravel 5.6中的以前的URL并打算使用

Laravel 5.5 - 升级身份验证后没有正确重定向

从 url laravel 5.4 中删除公共

Laravel 5.2 Entrust:如果他手动添加受限URL,则重定向用户

Laravel - 以 .php 结尾的重定向捕获/重定向 URL