Laravel 5 – 从 URL 中删除公共不要!做

2022-08-30 06:06:23

我知道这是一个非常受欢迎的问题,但我无法找到Laravel 5的工作解决方案。很长一段时间以来,我一直在尝试从Codeigniter迁移,但是这个复杂的安装过程一直让我失望。

我不想运行VM,这在项目之间切换时看起来很尴尬。

我不想将我的文档根目录设置为公用文件夹,这在项目之间切换时也很尴尬。

我试过.htaccess mod_rewrite方法

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

这给了我一个Laravel NotFoundHttpException编译.php行7610。

当我不久前尝试L4时,我使用了将公用文件夹的内容移动到根目录的方法。L5的结构完全不同,遵循相同的步骤完全破坏了Laravel(服务器只会返回一个空白页)。

有没有一种体面的方法可以在开发环境中删除“公共”,即:

  1. 与 L5 配合使用
  2. 允许我轻松地在项目之间切换(我通常在任何时候处理2或3)。

谢谢

** 我使用的是 MAMP 和 PHP 5.6.2


答案 1

对于Laravel 5:

  1. 在 Laravel 根文件夹中重命名为server.phpindex.php
  2. 将文件从目录复制到Laravel根文件夹。.htaccess/public

就是这样!


答案 2


请注意,当使用 Docker 为 Laravel 项目提供服务时:您不需要执行任何这些操作。仅当网站的根目录(或更常见的:public_html)目录是您的Laravel项目时,才使用此选项(当您使用Docker时并非如此)。

不要!

你真的不应该在Laravel根文件夹中重命名为并将文件从目录复制到Laravel根文件夹!!!server.phpindex.php.htaccess/public

通过这种方式,每个人都可以访问您的某些文件(例如)。自己试试吧。你不想要那个!.env


相反,您应该在根目录中创建一个文件,如下所示:.htaccess

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

这将以静默方式将所有基本 URI 重写到该文件夹。甚至所有标头(例如 HTTP 授权标头)和所有可选 URI 参数也将以静默方式传递到文件夹。/public/public

就这样


推荐