Laravel 5.1重写网址不起作用
Posted
技术标签:
【中文标题】Laravel 5.1重写网址不起作用【英文标题】:Laravel 5.1 rewrite url not working 【发布时间】:2016-01-09 09:42:42 【问题描述】:I am Working on Localhost (WAMP server, php version 5.5.12)
网址:http://localhost/laravel/
我的根目录.htaccess 是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
公共目录 .htaccess 是:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
#RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
在这种情况下,当我想访问时:http://localhost/laravel/ 出现以下错误信息: 抱歉,找不到您要查找的页面。
1/1 RouteCollection.php 第 161 行中的 NotFoundHttpException:
但是当我访问时:http://localhost/laravel/public/ 它成功加载主页。我已经在 url 重写中调试了所有东西,它工作正常,但 laravel 不接受新的 url。谁能帮我解决这个问题。
【问题讨论】:
您使用的是什么类型的网络服务器? wamp 或 php artisan serve 或宅基地? 我正在使用 WAMP 服务器 何不使用php artisan serve
,它会为你减轻压力
将index.php
和.htaccess
文件从/public
文件夹移动到根目录。你可以从http://***.com/questions/28364496/laravel-5-remove-public-from-url/32519877#32519877得到完美的答案
【参考方案1】:
您可以简单地解决这个问题。从您的公共目录 index.php 文件移动到根目录中,例如“project-name/index.php” 然后编辑你的 index.php 文件 在第 22 行替换 “需要 DIR.'/../bootstrap/autoload.php';”这与 "需要 DIR.'/bootstrap/autoload.php';"
和第 36 行替换 "$app = require_once DIR.'/../bootstrap/app.php';"和 "$app = require_once DIR.'/bootstrap/app.php';"
现在从 "project-name/bootstrap/autoload.php" 编辑 autoload.php 这里替换第 17 行 “需要 DIR.'/vendor/autoload.php';”和 需要 DIR.'/../vendor/autoload.php';
现在浏览您的项目名称。我认为它会解决你的问题。您也可以将 laravel 开发服务器设置为 localhost:8000,为此在命令窗口中打开您的项目文件夹并输入“php artisan serve”按 Enter。
【讨论】:
我看到很多帖子描述了使用以下 htaccess 从 url 中删除“public”:以上是关于Laravel 5.1重写网址不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 Php artisan 命令在作曲家更新后不起作用