Har*_*rsh 11 php laravel laravel-4
我正在尝试使用RESTful控制器.这是我的Route.php:
Route::resource('test', 'TestController');
Route::get('/', function()
{
return View::make('hello');
});
Run Code Online (Sandbox Code Playgroud)
这是我的 TestController.php
<?php
class TestController extends \BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
return View::make('test.home');
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用路线是localhost/Test/public/,它显示"你已到达"的消息.但是当我尝试localhost/Test/public/test它时,它给了我"Symfony\Component\HttpKernel\Exception\NotFoundHttpException"
这是我的日志:
[2014-05-11 14:29:59] production.ERROR: NotFoundHttpException Route: `http://localhost/Test/public/test` [] []
[2014-05-11 14:29:59] production.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in C:\wamp\www\test\bootstrap\compiled.php:5289
Stack trace:
#0 C:\wamp\www\test\bootstrap\compiled.php(4663): Illuminate\Routing\RouteCollection->match(Object(Illuminate\Http\Request))
#1 C:\wamp\www\test\bootstrap\compiled.php(4651): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request))
#2 C:\wamp\www\test\bootstrap\compiled.php(4643): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#3 C:\wamp\www\test\bootstrap\compiled.php(698): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#4 C:\wamp\www\test\bootstrap\compiled.php(679): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
#5 C:\wamp\www\test\bootstrap\compiled.php(1136): Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true)
#6 C:\wamp\www\test\bootstrap\compiled.php(7218): Illuminate\Http\FrameGuard->handle(Object(Illuminate\Http\Request), 1, true)
#7 C:\wamp\www\test\bootstrap\compiled.php(7815): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true)
#8 C:\wamp\www\test\bootstrap\compiled.php(7762): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true)
#9 C:\wamp\www\test\bootstrap\compiled.php(10768): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true)
#10 C:\wamp\www\test\bootstrap\compiled.php(640): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request))
#11 C:\wamp\www\test\public\index.php(49): Illuminate\Foundation\Application->run()
#12 {main} [] []
Run Code Online (Sandbox Code Playgroud)
我知道很多次都会问过这个问题.我经历了很多相关的线程,但却无法弄清楚解决方案.
Ant*_*iro 15
NotFoundHttpExceptionLaravel中的一个例外总是意味着它无法为特定URL找到路由器.在您的情况下,这可能是您的Web服务器配置,虚拟主机(站点)配置或.htaccess配置中的问题.
您的公共/ .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>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,第一行中存在一个条件IfModule mod_rewrite.c,因此如果您没有安装或启用mode_rewrite,则所有重写规则都将失败,
localhost/Test/public/
Run Code Online (Sandbox Code Playgroud)
工作正常,但不是这样:
localhost/Test/public/test
Run Code Online (Sandbox Code Playgroud)
另一方面,这个也应该工作,因为这是它的原始形式:
localhost/Test/public/index.php/test
Run Code Online (Sandbox Code Playgroud)
因为Laravel需要重写才能工作.
请注意,您不应该使用/ public,您的网址应如下所示:
localhost/Test/
Run Code Online (Sandbox Code Playgroud)
这是另一个线索,即您的虚拟主机的文档根目录未正确配置或未指向/ var/www/Test/public,或者您的应用程序所在的路径.
所有这些假设你使用的是Apache 2.
sun*_*tch 15
我有过这样的案例。我检查了所有代码,我的解决方案是:
php artisan route:cache
Run Code Online (Sandbox Code Playgroud)
因为我忘记清除路由缓存了。
| 归档时间: |
|
| 查看次数: |
56687 次 |
| 最近记录: |