Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel基本路由返回404_Php_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel基本路由返回404

Php Laravel基本路由返回404,php,laravel,laravel-4,Php,Laravel,Laravel 4,我最近开始学习拉威尔,但有一个问题我不知道为什么会发生。我目前的Laravel项目位于wamp/www/codebright。当我访问localhost/codebright/public时,我会看到Laravel的欢迎页面 创建简单路由时: Route::get('my/page', function() { return "Harro world"; }); 并尝试访问: localhost/codebright/public/my/page返回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
,但仍然

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

提前谢谢


似乎如果您安装了XAMPP,上面提到的问题和回答评论部分中提到的问题都不会发生。基本上,如果您使用的是XAMPP,很可能不会出现任何错误,程序也会正常工作。

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

如果没有,这里是如何在窗口中创建虚拟主机

步骤1:打开apacheconf文件

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>

服务器名www.mark-thomas.loc
文档根E:\wamp\www\codebright\public
SetEnv应用程序_ENV“开发”
DirectoryIndex.php
允许超越所有
命令允许,拒绝
通融
E:\wamp\www\codebright\public
是您的laravel应用程序路径,您可以将其替换为您的文件夹路径

步骤2: 打开->Windows\System32\drivers\etc\hosts

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

192.168.1.231 www.laravel.loc


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

确实可以做您想做的事情,但是如果您没有使用
artisan serve
您必须正确设置Web服务器。从您最初的帖子中,您显然在获得欢迎页面时设置了一个Web服务器,但在我看来,它类似于以下内容之一:

  • 您没有
    .htaccess
    文件
  • web服务器设置上的基本vhost(如果不使用vhost,则为Apache配置)不允许覆盖所有(这是允许
    .htaccess
    文件工作所必需的)
  • 您没有启用
    mod_rewrite
你应该看看这些。作为最低要求,Laravel需要一种方法,将不作为真实文件存在的URI(
my/page
)转换为可以伪造页面的URI。这几乎需要使用
mod_rewrite
.htaccess
文件来指定规则



解释使用Apache和artisan serve之间的区别:
artisan serve
不使用像Apache这样的“哑”Web服务器,而是使用内置在PHP中的Web服务器,它知道如何处理浏览到的“不存在”URI,这就是为什么您不需要
mod\u rewrite
.htaccess
文件的原因。

嘿!您的解决方案与
php artisan serve
有什么区别?他们都创建了一个我可以使用的Web服务器。您的代码创建
http://www.laravel.loc
和另一个
localhost:8000
。我只是问是否可以从
public
目录下运行,这样我就可以键入
localhost/codebright/public/my/page
,而不是设置虚拟主机并键入
localhost:8000/my/page
。谢谢好的,这就解释了问题。有什么建议吗?我应该用什么<代码>php artisan服务或直接访问我的
公用
文件夹。还请参考我的web应用程序最终将位于的主机。我的意思是,当php artisan Service存储在我的托管公司时,我不能在我的网站上运行它,所以我必须访问
public
目录,对吗?如何修复文件以使其正常工作?绝大多数托管提供商将安装
mod_rewrite
,并且
允许您为vhost覆盖所有
,允许您使用
.htaccess
文件。我的观点是,这是PHP应用程序作为一个整体的共同要求(Laravel在这里没有什么特别的,这些要求也不疯狂),它们都支持它——如果它们不支持,您就需要一个新的主机。在本地,您可以做您想做的事情,尽管我建议尝试正确设置您的Apache环境(为了节省每次在现场工作时必须做的服务工作)-可能只是在命令行上执行
sudo a2enmod rewrite
,然后检查Apache配置中是否设置了
AllowOverride All
。即使我将我的
Apache/conf/httpd.conf
文件更改为:
AllowOverride All Require allowed
我仍然无法执行
localho>之类的操作st/codebright/public/my/page
。在我的
public
目录中,这是我的.htaccess文件:您是否确实启用了
mod_rewrite
?它在Apache上默认情况下没有启用,但它是捆绑的,所以只需要启用。