2017-09-01 2 views
0

J'ai un projet dans Laravel 5.2 et un problème que l'un itinéraire ne fonctionne pas. Quand j'appelle cette voie, il va à Apache 404.Laravel ONE route ne fonctionne pas

Voici quelques-unes de mes itinéraires:

Route::get  ('/icons',     '[email protected]'); 
Route::get  ('/icons/create',   '[email protected]'); 
Route::post  ('/icons',     '[email protected]'); 
Route::get  ('/icons/{id}/edit',  '[email protected]'); 
Route::patch ('/icons/{id}',   '[email protected]'); 
Route::delete ('/icons',     '[email protected]'); 

Comme vous pouvez le voir, ce sont les routes CRUD. J'ai beaucoup d'autres routes comme celles-ci dans mon application, mais juste '/icons/{id}/edit' me donner l'erreur.

J'ai déjà essayé de modifier l'itinéraire pour appeler une vue, mais l'erreur persiste.

Route::get  ('/icons/{id}/edit',  function() { 
    return view('welcome'); 
}); 

Dans ma machine de développement, la route fonctionne, mais pas dans le serveur de production.

Developer Machine: OSX + Apache + php7

Serveur de production: Ubuntu 16 + Apache + php7

Que dois-je faire pour corriger cela? Si vous avez besoin de plus d'informations s'il vous plaît dites-moi. Merci.

EDIT:

IconController étend GeneralController.

En GeneralController je:

public function edit($id, Request $request) 
{ 
    $log = new ActivityLogRepository(); 
    $log->store($request, 'R'); 

    $this->request = $request; 
    $segments = $request->segments(); 

    return view($this->viewDir.'.form', [ 
     'data' => $this->editData($id), 
     'name' => $this->name, 
     'icon' => $this->icon, 
     'nameAction' => trans('messages.button_'.end($segments)), 
     'baseRoute' => $this->baseRoute, 
     'viewDir' => $this->viewDir, 
    ]); 
} 

Dans IconController J'ai:

protected function editData($id) 
{ 
    $record = Icon::findOrFail($id); 

    return (object)['record' => $record]; 
} 

Tous les contrôleurs CRUD fonctionnent de la même façon.

EDIT 2:

journal Apache. J'ai accédé à la page des icônes puis à un autre CRUD (clients).

my_ip - - [01/Sep/2017:13:21:40 +0000] "GET/HTTP/1.1" 302 1377 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:21:40 +0000] "GET /login HTTP/1.1" 200 2881 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:21:55 +0000] "POST /login HTTP/1.1" 302 1347 "http://example.com/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:21:55 +0000] "GET/HTTP/1.1" 200 11140 "http://example.com/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:21:56 +0000] "GET /images/users/thumbs/5968097a83fae.png HTTP/1.1" 304 181 "http://example.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:21:57 +0000] "GET /events/notification HTTP/1.1" 200 972 "http://example.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:22:04 +0000] "GET /icons HTTP/1.1" 200 7285 "http://example.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:22:11 +0000] "GET /icons/44/edit HTTP/1.1" 404 510 "http://example.com/icons" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:29:18 +0000] "GET /clients HTTP/1.1" 200 6523 "http://example.com/icons" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
my_ip - - [01/Sep/2017:13:29:20 +0000] "GET /clients/16/edit HTTP/1.1" 200 12344 "http://example.com/clients" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 
+0

pouvez-vous partager la méthode @edit? et votre fichier de route complète, je dirais qu'il ya des conflits avec même poste ou méthode de mise –

+0

@AnarBayramov J'ai édité la question avec les codes et [voici les routes] (https://pastebin.com/h1ktspuD) –

+0

pouvez-vous montrer le journal d'accès apache? –

Répondre

2

icons est un alias standard dans Apache. Par défaut, Laravel .htaccess est configuré pour que Laravel ne gère que les demandes de fichiers ou de répertoires qui n'existent pas. En regardant les routes:

Route::get  ('/icons',     '[email protected]'); 
Route::get  ('/icons/create',   '[email protected]'); 
Route::post  ('/icons',     '[email protected]'); 

Elles ressemblent toutes à des demandes de fichiers, en ce qui concerne Apache. Ces fichiers n'existent pas, donc Laravel gère les requêtes, et tout fonctionne bien.

Route::get  ('/icons/{id}/edit',  '[email protected]'); 

slash après le icons/ ici signifie Apache pense qu'il est un répertoire, et Apache ne savoir sur un répertoire appelé icônes - son alias standard icônes. Donc Laravel ne gère pas cette requête, et c'est laissé à Apache. Dans le répertoire des icônes d'Apache, il n'y a pas de répertoire appelé "44" (ou quel que soit l'ID). Apache lance donc un 404.

La solution consiste à supprimer l'alias icons d'Apache (en supposant que vous n'en ayez pas besoin)), as described for eg here ou utilisez un nom différent pour cette route, par exemple my-icons etc.

+0

Merci! Tu as sauvé ma journée. Je viens de renommer la route et j'ai travaillé. –