我最近开始学习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,您很可能不会收到任何错误,程序将正常工作。
答案 0 :(得分:3)
确实可以做你想要的事情,但如果你不使用artisan serve
,你必须正确设置网络服务器。在您的原始帖子中,当您收到欢迎页面时,您显然已经设置了网络服务器,但它看起来像我之一:
.htaccess
文件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
。现在你会看到你的消息!