Bonjour,
J'ai créé mon premier site avec Laravel 7, je suis d'ailleurs extrêmement satisfait d'avoir fait récemment le choix de ce Framework.
Je cherche à rendre cet app "multi-site" sans utilisé de domaines différent mais plutôt avec des sous-répertoires dans mes urls (préfixe), comme le font certains CMS comme magento et j'ai du mal à trouver la bonne solution.
Actuellement j'ai des urls de la forme :
- http://www.mondomaine.com/category/slug
- http://www.mondomaine.com/fiche/slug
Je voudrais que :
- Ces urls soient accessibles avec un préfixe ex: http://www.mondomaine.com/site1/category/slug et http://www.mondomaine.com/site2/category/slug
- Que les urls courantes retourne une 404
- Que je ne sois pas obliger de dupliquer toutes mes routes à chaque fois que je veux publier un nouveau site (grosso modo j'irais chercher en bdd si le préfixe existe, je charge mes paramètres d'affichage spécifiques au site sinon je retourne une 404).
- Que toutes mes routes générées dans mes pages le soient avec le préfixe courant (il sera stocké en session)
Le point de départ qui me parait vraiment intéressant est de modifier le fichier RouteServiceProvider.php de la sorte :
J'ai trouvé cela en cherchant des sujets sur le multilangues avec des sous-répertoires qui me parait être le même principe de fonctionnement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('{sitename?}') ->group(base_path('routes/web.php')); }
Ceci modifie bien mes routes et celles de bases sont bien en 404.
Par contre mes routes avec slug ne fonctionnent plus et la génération d'url dans mes pages idem.
ex : Route::get('/category/{slug}', 'Site\CategoryController@show')->name('category.show'); => le slug retourné sera "site1" et plus la dernière partie de l'url
Merci d'avance pour vos conseils.
Partager