Laravel基本路由返回404


Laravel basic routing returns 404

我最近开始学习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和still。

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

提前感谢!

备注

如果您安装了XAMPP,那么上面提到的问题和答案注释部分中提到的问题似乎都不会发生。基本上,如果你使用XAMPP,你很可能不会得到任何错误,程序会很好地工作。

确实可以随心所欲,但如果不使用artisan serve,则必须正确设置Web服务器。从你最初的帖子来看,当你收到欢迎页面时,你显然已经设置了一个网络服务器,但在我看来,它就像下面的一个:

  • 您没有.htaccess文件
  • web服务器设置上的基本vhost(或Apache配置,如果不使用vhost(没有AllowOverride All(这是允许.htaccess文件工作所必需的(
  • 您没有打开mod_rewrite

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


解释使用Apache和artisan serve之间的区别:artisan serve不使用像Apache这样的"哑"Web服务器,而是使用内置在PHP中的Web服务器,该服务器了解如何处理您浏览到的"不存在"URI,这就是为什么您不需要mod_rewrite.htaccess文件。

您是否为您的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步:打开->Windows''System32''drivers''etc''hosts

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

192.168.1.231 www.laravel.loc

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