Laravel快速入门指南路线不工作

好吧,我是Laravel的新手,所以直接去了文档开始。 文档中有很大的漏洞,所以花了很多的努力和谷歌search填补空白,以获得Laravel设置。 我现在已经build立了,并进入了快速入门指南的下一步。我创build了我的路线

Route::get('users', function() { return 'Users!'; }); 

现在它说:

 Now, if you hit the /users route in your web browser, you should see Users! 

所以我打了起来:

 http://localhost/laravel/users 

但得到一个404? 我试过了

 http://localhost/laravel/public/users 

但还是404? 我按照快速入门指南的步骤,我错过了什么?

似乎您的Laravel应用程序可通过Apache HTTP别名访问,因为您的URL如下所示: http://localhost/laravel/ 。 如果是这种情况, 并假设 http://localhost/laravel指向您的公共目录,请按照下列步骤操作:

  1. 尝试导航到您预期的路线前面加上/index.php/ ,你的情况: http://localhost/laravel/index.php/users 。 如果它工作(没有404),那么你的问题是Apache HTTP的重写模块configuration,你应该按照下面的步骤。
  2. 编辑文件public/.htaccess
  3. RewriteEngine On的行下添加RewriteBase /laravel/
  4. 尝试导航到现有的路线。

基本上,如果你的应用程序驻留在一个别名或者虚拟目录中(比如http://localhost/alias ),你应该在你的重写规则中添加一个条目来重写带有alias基本目录

由于AllowOverride指令被设置为None, Apache不会读取public / .htaccess文件。 尝试将其设置为全部

Laravel 4简单的路由不能使用mod_rewrite和.htaccess

上面的Rubens很好地解释了这个问题。一个简单的解决scheme是使用提供的内置PHP服务器

 php artisan serve --port=8080 

请注意,我在这里使用端口8080,您可以省略它。现在您可以通过转到浏览网站

 localhost/users 

它应该工作!

我有同样的问题,花了几个小时来解决这个问题。 我有几个应用程序在同一个域下,但在不同的细分市场。 所以Laravel的url是http://myhostname/mysubdir/

我的控制器只能作为http://myhostname/mysubdir/index.php/mycontroller

在/var/www/…/public/.htaccess我把RewriteBase /mysubdir工作!

请参考下面的url,看看RoboTamer的configuration:

http://forums.laravel.io/viewtopic.php?id=511

它解决了我的问题,就像你的一样

解决scheme在nginx中:

服务器{

  server_name .laravel.dev; root /home/tamer/code/laravel/public; index index.php index.html; #browse folders if no index file autoindex on; # serve static files directly location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } # removes trailing slashes (prevents SEO duplicate content issues) if (!-d $request_filename) { rewrite ^/(.+)/$ /$1 permanent; } # enforce NO www if ($host ~* ^www\.(.*)) { set $host_without_www $1; rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent; } # canonicalize codeigniter url end points # if your default controller is something other than "welcome" you should change the following if ($request_uri ~* ^(/lobby(/index)?|/index(.php)?)/?$) { rewrite ^(.*)$ / permanent; } # removes trailing "index" from all controllers if ($request_uri ~* index/?$) { rewrite ^/(.*)/index/?$ /$1 permanent; } # unless the request is for a valid file (image, js, css, etc.), send to bootstrap if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?/$1 last; break; } # catch all error_page 404 /index.php; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/tmp/php.socket; fastcgi_index index.php; #include fastcgi_params; include /home/tamer/code/nginx/fastcgi_params; } access_log /home/tamer/code/laravel/storage/logs.access.log; error_log /home/tamer/code/laravel/storage/logs.error.log; 

}

谢谢。 通过@rubens了解上述知识,并通过@GaryJ 在这里发表评论, 这使我可以从我的Apache虚拟主机文件中使用它。

从vhostsconfiguration节点的laravel复制.htaccess文件中的这些行。 删除我的.htaccess文件(这是反正没有被应用,我在一个Windows Apache的虚拟主机,laravel env)

 RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] 

更好:稍后阅读@ Ag0r0的答复,工作。 我错过了允许覆盖,使上述必要。 一旦allowoverride所有在那里,默认设置本身工作。

在我的情况下( Ubuntu 14.04 LTS & Apache 2.2 ),我被困在@Rubens解决scheme的第一步。 我可以看到这个url的页面: http://localhost/laravel/index.php/users但步骤#2和其他人没有工作。

此外,我试图添加RewriteBase /laravel/public.htaccess但它不工作。

然后我用这个真棒教程build立了一个新的虚拟主机: https : //www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu- 14-04- lts(他们用这些东西摇滚)

除了教程,我已经设置DocumentRoot (在example.com.conf文件)像这样:

 DocumentRoot /var/www/laravel/public 

是的, public在这里是大不了的。

顺便说一句,不要把RewriteBase /laravel/你的.htacces文件,否则你会得到HTTP/500错误。

现在,我可以看到example.com/users页面。

我知道这个问题是4岁,但仍然有其意义.Rubens Mariuzzo被正确回答了,但我想补充一点。 你说

“文档中有很大的漏洞,所以需要付出很大的努力,并通过search来填补空白,以便让Laravel成立”

对于初学者来说,很难find正确的Laravelconfiguration方式。 一旦掌握了,开发Laravel就很有趣:)。 这样做有一定的正确方法。

  1. 下载Laravel
  2. configuration数据库
  3. 在.env中映射数据库
  4. 使auth:php artisan make:auth
  5. 一起创build模型和迁移:php artisan make:model Todo -m
  6. 迁移:php artisan迁移
  7. 一起创build控制器和路线:php artisan make:controller TodoController –resource
  8. 为每个操作创build视图
  9. 编码控制器

详细描述在这个博客http://masterlaravel.blogspot.in/2017/08/laravelquick-start-composer-create.html

我之前的post中所描述的问题已经被删除了,但是和这里描述的情况类似。

无论如何…只是我已经尝试了所有在这里描述以及在其他网页上的可能性,我没有find解决我的问题。

Laraval的新安装根本没有工作….在尝试从这篇文章的每一个思考后,我决定创build另一个新的安装和奇迹发生这种安装实际上工作…

所以我的build议是:如果你不能解决这个问题只是尝试创build另一个laravel安装,它可能实际上工作。

这可能实际上是最简单的方法来解决你的问题,如果你从垃圾邮件开始。