Laravel从url中删除public


Laravel remove public from url

这是我为Laravel 5.2 设计的文件夹结构

-laravel
--app
--bootstrap
--config
...

在Laravel的根目录laravel文件夹下,我添加了一个.htaccess文件,代码如下:

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

现在,当我在浏览器中打开项目时,我得到错误:

很抱歉,找不到您要查找的页面。"RouteCollection.php第161行中的NotFoundHttpException:"

我正在使用XAMPP。为什么我会出现这个错误?如何使用此方法从URL中删除public?

您需要将web服务器指向public目录,而不是项目根目录。使用原始.htaccess和以下Apache设置:

DocumentRoot "C:/xampp/htdocs/public"
<Directory "C:/xampp/htdocs/public">

重新启动Apache以使其正常工作。

最好的方法是在xampp中创建一个虚拟主机,并将其DocumentRoot设置为laravel公用文件夹。这里有一个关于如何在xamp中创建vhosts的好教程

https://delanomaloney.com/2013/07/10/how-to-set-up-virtual-hosts-using-xampp/

根据需要创建一个文件夹和名称,移动该文件夹中除public之外的所有文件,将public文件夹的内容移动到root。之后,您必须编辑index.php并通过新闻文件夹名称更改[newFolder]

require __DIR__.'/[newFolder]/bootstrap/autoload.php';
$app = require_once __DIR__.'/[newFolder]/bootstrap/app.php';

•转到主项目/公共>>

a.  .htacess
b.  favicon.ico
c.  index.php
d.  robots.txt
e.  web.config

1.从公用文件夹中剪切这5个文件,然后粘贴到主项目文件夹上,这意味着公用文件夹的外侧…主项目/文件

2.粘贴后,打开index.php,修改

•require __DIR__.'/…/bootstrap/autoload.php';  to
•require __DIR__.'/bootstrap/autoload.php';
    modify
    $app = require_once DIR.'/../bootstrap/app.php'; to
    $app = require_once DIR.'/bootstrap/app.php';

从更改httpd.conf文件

DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">

DocumentRoot "C:/xampp/htdocs/{projectname}/public"
<Directory "C:/xampp/htdocs/{projectname}/public">

重新启动apache。然后您现在可以在URLlocalhost/

中访问您的项目