Laravel 5 - 从URL中删除Public

16 浏览
0 Comments

Laravel 5 - 从URL中删除Public

我知道这是一个非常流行的问题,但是我一直找不到适用于Laravel 5的工作解决方案。我一直在尝试从Codeigniter迁移,但这个复杂的安装过程一直让我却步。

我不想运行虚拟机,在项目之间切换时这似乎很麻烦。

我不想将我的文档根目录设置为public文件夹,在项目之间切换时这也很麻烦。

我尝试了.htaccess文件的mod_rewrite方法。

  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]

但这只给我返回了Laravel NotFoundHttpException错误,具体在compiled.php的第7610行。

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

是否有一个不错的方法可以在开发环境中删除“public”,同时要求:

  1. 适用于L5
  2. 允许我轻松地在项目之间切换(我通常同时处理2或3个项目)。

谢谢

** 我正在使用MAMP和PHP 5.6.2

admin 更改状态以发布 2023年5月22日
0
0 Comments

请注意,当使用Docker为Laravel项目提供服务时,您不需要执行任何操作。只有在您的网站的根目录(或更常见的情况:`public_html`目录)是您的Laravel项目时才使用此选项(在使用Docker时不是这种情况)。\n\n千万不要将Laravel根文件夹中的`server.php`重命名为`index.php`,并将`/public`目录中的`.htaccess`文件复制到Laravel根文件夹中!这样所有人都可以访问您的某些文件(例如`.env`)。亲自试一试,您不想这样做!\n\n相反,您应该在根目录中创建一个`.htaccess`文件,如下所示:\n\n

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

\n\n这将在静默重写所有您的基URI到`/public`文件夹。甚至所有标题(例如HTTP身份验证头)和所有可选的URI参数也将静默传递到`/public`文件夹中。\n\n就是这样。

0
0 Comments

对于 Laravel 5:

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

就这样!

0