我最近开始学习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
。现在您将看到您的消息!