2016-07-26 158 views
0

我最近开始laravel的教程“快速启动”和我被困在此错误:在此服务器上未找到请求的URL /任务。 laravel /快速启动

The requested URL /task was not found on this server.

env:wamp 
code: 
DocumentRoot: 'E:/workspace/laravelapp/public" 

    Route::post('/task',function(Request $request){ 

    $validator = Validator::make($request->all(),[ 
      'name' => 'required|max:255', 
    ]); 

    if($validator->fails()){ 
     return redirect('/') 
      ->withInput() 
      ->withError($validator); 
    } 
    //create task 
    $task = new task; 
    $task->name = $request->name; 
    $task->save(); 

    return redirect('/'); 
}); 

我试图用url(),我发现,如果URL有“的index.php ',它工作,否则它不起作用。所以我认为可能由.htaccess引起的问题,但我尝试失败。

+0

能够在你的Apache –

+0

句子结构,代码和引用块的mod_rewrite – jwvh

回答

0

在你的.env文件中,你可以添加一个常量。

DOMAIN = http://localhost/laravelapp/public/(或如何本地主机路径是)

然后在你的形式添加动作<form action="{{env('DOMAIN')}}/task">。

因为我认为你的情况,如果你只有<form action="/task">它将重定向到http://localhost/task

+0

谢谢。真的,请求将重定向到http://本地主机/任务。我试图解决的问题在您的方式,然后报告错误:'未定义的域'。我认为该常量不能从文件的角度来看availbale。我应该渲染一个变量,通过'view()'来查看? –

+0

对不起,我编辑了代码。 action attr中的“/ task”在大括号内。应该出去。希望它可以这样工作:) –

0

感谢所有的爱好者,问题已经解决。 1.check mod_rewrite apache的状态; 2.检查'Options FollowSymLinks AllowOverride none'的配置,你需要修改它为'Options FollowSymLinks AllowOverride all'。 3.edit你的.htaccess,EXP:

<IfModule mod_rewrite.c> 
<IfModule mod_negotiation.c> 
    Options -MultiViews 
</IfModule> 

RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

# Handle Authorization Header 
RewriteCond %{HTTP:Authorization} . 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

现在,重新启动Apache的,它的工作原理。

:)

相关问题