2014-07-25 153 views
3

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

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

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,你很可能不会得到任何错误,程序将工作得很好。

回答

3

确实有可能做你想做的事情,但如果你不使用artisan serve你必须有一个web服务器设置正确。从你原来的职位,你显然有一个网络服务器设置为你的欢迎页面,但在我看来像下列之一:

  • 你没有.htaccess文件到位
  • 你的基地虚拟主机(或者,如果不使用虚拟主机的Apache配置)Web服务器上的安装程序不AllowOverride All(这是需要让.htaccess文件工作)
  • 您不必mod_rewrite开启

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


使用Apache和artisan serve之间的差异的说明:artisan serve不使用Apache一个“哑巴”的网络服务器,而是使用PHP内置Web服务器,其具有的如何处理“不存在”的URI知识你浏览到,这就是为什么你不需要mod_rewrite.htaccess文件。

+0

好的,这解释了这个问题。任何建议?我应该使用什么? 'php artisan serve'或者直接访问我的'public'文件夹。另请参考我的网络应用程序最终会使用的主机。我的意思是当我的网站存储在我的主机公司时,我无法在我的网站上运行'php artisan serve',因此我必须访问'public'目录,对吗?如何修复我的文件,以便它能正常工作? – kfirba

+0

绝大多数托管服务提供商都会为您的虚拟主机安装'mod_rewrite' *和*'AllowOverride All',允许您使用'.htaccess'文件。我的观点是,对于整个PHP应用程序来说,这是一个普遍的要求(Laravel在这里并不特别,这些要求并不疯狂),他们都支持它 - 如果他们不需要一个新的主机。 – alexrussell

+0

在本地,你可以做你想做的事情,尽管我会建议你试着正确地设置你的Apache环境(为了节省每次在网站上工作时都要做的事情) - 这可能只是一个' sudo a2enmod rewrite'命令行,然后检查在您的Apache配置中设置了“AllowOverride All”。 – alexrussell

0

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

如果没有在这里是如何在窗口

第1步创建的虚拟主机:打开阿帕奇的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 \等\主机

添加您的IP地址,IP地址

192.168.1.231 www.laravel.loc

重启名单你的apache服务器打到http://www.laravel.loc/my/page。现在你会看到你的消息!

+0

嘿!你的解决方案和'php artisan serve'有什么区别?他们都创建了一个可以工作的网络服务器。你们创建'http:// www.laravel.loc',另一个'localhost:8000'。我只是问是否可以从'public'目录下工作,这样我就可以输入'localhost/codebright/public/my/page'而不是设置虚拟主机并键入'localhost:8000/my/page'。谢谢! – kfirba