这是我为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/