Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 4路由到公用文件夹而不是视图文件夹_Php_Apache_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel 4路由到公用文件夹而不是视图文件夹

Php Laravel 4路由到公用文件夹而不是视图文件夹,php,apache,laravel,laravel-4,Php,Apache,Laravel,Laravel 4,我是PHP/Laravel的新手,这可能很傻,但我无法让它工作。我在routes.php文件中定义了这两个路由: Route::get('about', function() { return 'this is about'; }); Route::get('/', array('as'=>'home', function() { return View::make('hello'); })); 如果我像这样访问我的应用程序:它正确呈现视图。但是,如果我像或那样访问我的

我是PHP/Laravel的新手,这可能很傻,但我无法让它工作。我在
routes.php
文件中定义了这两个路由:

Route::get('about', function()
{
    return 'this is about';
});

Route::get('/', array('as'=>'home', function()
{
    return View::make('hello');
}));
如果我像这样访问我的应用程序:它正确呈现视图。但是,如果我像或那样访问我的应用程序,我会得到404

我检查了apache日志,发现以下错误:

[错误][客户端127.0.0.1]文件不存在: C:/tmp/Git_Repository/website/testapp/public/about

[错误][客户端127.0.0.1]文件不存在: C:/tmp/Git_Repository/website/testapp/public/home

你知道为什么会这样吗?

注意:我使用的是Wamp,具有以下Apache2.2.22配置

<Directory "C:/tmp/Git_Repository/website/">
    AllowOverride All
    Order Deny,Allow
    Allow from all
</Directory>

<VirtualHost *:88>
    DocumentRoot "C:\tmp\Git_Repository\website\testapp\public"
    ServerName testapp.dev
</VirtualHost> 

允许超越所有
命令拒绝,允许
通融
DocumentRoot“C:\tmp\Git\u Repository\website\testapp\public”
ServerName testapp.dev

谢谢您的帮助。

您的
routes.php文件中没有
主页
路由,无论如何,您可以尝试以下方法:

<VirtualHost testapp.dev>
    DocumentRoot "C:\tmp\Git_Repository\website\testapp\public"
    ServerName testapp.dev
</VirtualHost>

然后重新启动Apache并重试。

使用Apache时,如果Laravel(或任何其他应用程序)似乎将URL映射到目录结构而不是定义的路由,则原因很可能是缺少或不活动的重写规则

首先确保您的公共目录中有
.htaccess
文件,查看以下内容:

确保通过删除开头的
#
来取消注释

在Linux上(可能还有Mac上)

快跑

$ a2enmod rewrite
确保在那之后重新启动Apache,您就可以开始了

从5.4版开始,PHP附带了一个基本的内置Web服务器。它没有Apache强大,也不能重写URL,但仍然可以实现这种行为。这就是拉威尔的目的。因此,如果您的开发环境不需要Apache的全部功能,您可以使用Laravel根目录(非公共)中的PHP内置服务器,并将路由器文件传递给它:

$ php -S localhost:8000 server.php

现在,您不必担心Apache和重写模块,它只是开箱即用。

您的
public
目录中是否有Laravel
.htaccess
文件?看起来您的
/public
目录中的
.htaccess
-文件丢失或重写规则不起作用。确保已安装/启用
.htaccess
文件:和
mod\u rewrite
。顺便说一句:路由的名称(如
['as'=>'home'…]
中所述)并不使
/home
成为可访问的URI,它只是为了更好地在应用程序中引用,例如使用
URL::route('home'))
。因此,您可以引用该名称,而不管实际路由是什么样子。您尚未定义主路由,如果您无法访问已定义的关于路由的内容,则您的公用目录配置一定有问题。默认访问权限我猜是。htaccess文件位于我的公用目录中,但重写模块已禁用。Quasdunk,您的评论让我意识到了这一点,所以如果你想添加答案,我会将其标记为已接受。谢谢大家的评论/答案。
#LoadModule rewrite_module modules/mod_rewrite.so
$ a2enmod rewrite
$ php -S localhost:8000 server.php