IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

[7.x] multi-sites avec sous répertoires


Sujet :

Laravel PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [7.x] multi-sites avec sous répertoires
    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 :

    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'));
        }
    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.
    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.

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Pour information j'ai réussi à répondre à mon besoin assez simplement en comprenant mieux le fonctionnement des route group de Laravel :

    - Revenir en arrière sur la modification du fichier RouteServiceProvider.php

    - Utilisé un Route::group avec prefix avec paramètre sur mes routes dans le fichier web.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Route::group(['prefix' => '{sitename}', 'middleware' => ['web','check.site']], function ($sitename) {
        Route::get('/category/{slug}', 'Site\CategoryController@show')->name('category.show');
        Route::get('/fiche/{slug}', 'Site\FicheController@show')->name('fiche.show');    
    });
    - Création du Middleware check.site utilisé ci-dessus pour vérifier que le site existe en bdd et mettre son le 'sitename' en session

    - Passage du paramètre sitename dans chaque généation d'urls de mes vues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="{{ route('category.show',[ "sitename" => session("sitename"), "slug" => $category->slug]) }}">{{ $category->name }}</a>
    Comme dit précédemment je suis en phase d'apprentissage de Laravel çà ne méritait peut-être pas un post sur le forum mais bon ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Multi sites avec Symfony
    Par aurapp dans le forum Symfony
    Réponses: 2
    Dernier message: 22/10/2009, 09h31
  2. multi sites avec 1 ip interne
    Par Larson dans le forum Apache
    Réponses: 1
    Dernier message: 19/03/2009, 16h58
  3. [Compiler] Compilation GUI avec sous répertoires
    Par zeus7857 dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/02/2009, 17h15
  4. Organisation site avec sous domaines
    Par bruno bdf dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 21/11/2007, 14h48
  5. Multi site avec jsp
    Par jpastier dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/01/2007, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo