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”: RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] 但我无法理解在这种情况下如何工作?你能描述一下吗?

以上是关于Laravel 5.1重写网址不起作用的主要内容,如果未能解决你的问题,请参考以下文章

旧网址的网址重写不起作用

博客上的 Laravel 5.1 多对多标签不起作用

Laravel 5.1 Php artisan 命令在作曲家更新后不起作用

规则重写不起作用 - 不错的网址

laravel 5.1 Artisan::call() 参数--供应商标签:发布不起作用

使用 Laravel 路由获取 404 - 重写不起作用