Laravel基本路由返回404

时间:2014-07-25 08:45:36

标签: php laravel laravel-4

我最近开始学习Laravel,但有一个问题我不知道为什么会发生。我目前的Laravel项目位于wamp/www/codebright。当我访问localhost/codebright/public时,我看到Laravel的欢迎页面。

当我创建一个简单的路由时:

Route::get('my/page', function()
{
    return "Harro world";
});

并尝试访问: localhost/codebright/public/my/page它返回404错误,甚至没有Laravel错误。我还尝试访问:localhost/codebright/my/page并且仍然。

但是,如果我键入CMD php artisan serve并在8000端口上打开服务器,然后访问: localhost:8000/my/page它运作得很好。我想知道为什么没有artisan命令的第一个方法不起作用。

提前致谢!

注意

如果您安装了XAMPP,似乎没有上面提到的问题以及答案评论部分中出现的问题。基本上,如果您使用XAMPP,您很可能不会收到任何错误,程序将正常工作。

2 个答案:

答案 0 :(得分:3)

确实可以做你想要的事情,但如果你不使用artisan serve,你必须正确设置网络服务器。在您的原始帖子中,当您收到欢迎页面时,您显然已经设置了网络服务器,但它看起来像我之一:

  • 您没有.htaccess文件
  • 您的网络服务器设置中的基本虚拟主机(如果不使用虚拟主机,则为Apache配置)不AllowOverride All(这是允许.htaccess文件工作所必需的)
  • 您没有mod_rewrite开启

你应该检查这些。至少,Laravel需要一种方法将不存在的URI作为真实文件(my/page)转换为可伪造页面的内容。这几乎需要使用mod_rewrite.htaccess文件来指定规则。


解释使用Apache和artisan serve之间的区别:artisan serve不使用' dumb'像Apache这样的网络服务器,而是使用PHP内置的网络服务器,它知道如何处理不存在的#39;您浏览的URI,这就是您不需要mod_rewrite.htaccess文件的原因。

答案 1 :(得分:0)

您是否为laravel项目创建了虚拟主机?

如果没有,那么如何在窗口中创建虚拟主机

第1步:打开apache conf文件

apache\conf\extra\httpd-vhosts.conf

在最后一行添加以下代码。

<VirtualHost *:80>
    ServerName www.mark-thomas.loc
    DocumentRoot E:\wamp\www\codebright\public
    SetEnv APPLICATION_ENV "development"
    <Directory E:\wamp\www\codebright\public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

E:\wamp\www\codebright\public是您的laravel应用程序路径,您可以将其替换为文件夹路径。

第2步: 开&GT;的Windows \ System32 \ drivers下\等\主机

在IP地址列表中添加您的IP地址

192.168.1.231 www.laravel.loc

重新启动您的apache服务器点击http://www.laravel.loc/my/page。现在你会看到你的消息!