[英]Laravel 4 routes hitting public folder instead of views folder
我是PHP / Laravel的新手,这可能很愚蠢,但是我无法使它正常工作。 我在routes.php
文件中定义了以下两条路由:
Route::get('about', function()
{
return 'this is about';
});
Route::get('/', array('as'=>'home', function()
{
return View::make('hello');
}));
如果我以如下方式访问我的应用程序: http : //testapp.dev : 88,它将正确呈现视图。 但是,如果我访问http://testapp.dev:88/home或http://testapp.dev:88/about之类的应用,则会收到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并具有以下Apache 2.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>
谢谢你的帮助。
无论如何,您都没有在routes.php
文件中声明ib的home
路由,您可以尝试以下操作:
<VirtualHost testapp.dev>
DocumentRoot "C:\tmp\Git_Repository\website\testapp\public"
ServerName testapp.dev
</VirtualHost>
还要确保已在windows/system32/drivers/etc/host
文件中添加了一个条目。 喜欢:
# The ip address could be something like: 127.0.0.10
127.0.0.10 testapp.dev
然后重新启动Apache
,然后重试。
与Apache一起使用时,如果Laravel(或任何其他应用程序)似乎将URL映射到目录结构而不是已定义的路由,则原因很可能是缺少或无效的重写规则。
首先,请确保您的公共目录中包含.htaccess
冷却对象, 如下所示 :
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
它包装在if语句中,并且仅在加载Apache模块mod_rewrite
适用。 为确保已加载,
在Windows上:
在您喜欢的文本编辑器中打开httpd.conf
文件(位于Apache安装文件夹中的某个位置),然后查找该行
#LoadModule rewrite_module modules/mod_rewrite.so
确保通过删除开头的#
取消注释
在Linux(可能是Mac)上
赶紧跑
$ a2enmod rewrite
确保在那之后重新启动Apache,您应该一切顺利。
从5.4版开始,PHP附带了一个基本的内置Web服务器。 它不像Apache一样强大,并且不能重写URL,但是仍然可以实现这种行为。 那就是Laravel的server.php的目的。 因此,如果您在开发环境中不需要Apache的全部功能,则可以在Laravel的根目录(非公共目录)中使用PHP的内置服务器,并将其传递给路由器文件:
$ php -S localhost:8000 server.php
现在,您不必担心Apache和重写模块,它可以直接使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.