Tout sur MODx : Lancez-vous facilement avec le CMS MODx.

Comment créer plusieurs sites sur une seule installation MODx

Le multi-site sur MODx Révolution

Tout sur MODx » Guides Pratiques » Comment créer plusieurs sites sur une seule installation MODx
Comment créer plusieurs sites sur une seule installation MODx

Comment créer plusieurs sites sur une seule installation MODx

Cet article vous explique comment utiliser le multi-site avec différents noms de domaine dans une seule installation MODx Révolution.

1. Préparation

  • Dans un premier temps les différents noms de domaine doivent pointer sur le serveur où est installé votre MODx Révolution.
  • Vous avez besoin d'avoir un accès au répertoire où vous avez installé MODx, si vous ne l'avez pas déjà installé, faites le. Suivez cet article qui vous explique comment installer MODx.

2. Créer les différents contextes

Pour mettre en place plusieurs sites sur une seule installation de MODx, il faut créer un contexte pour chacun de ces sites. Un contexte nommé web est créé par défaut, celui-ci correspond à votre nom de domaine principal. Nous allons donc créer un nouveau contexte pour un nouveau site. Vous devez aller dans Système > Contextes dans le menu supérieur.

contexte MODx

Une fois sur cette page, vous remarquez le contexte par défaut "web" et le contexte "mgr" qui correspond au manager MODx. Ces deux contextes ne doivent pas être supprimés ni modifiés.

Pour créer ce nouveau contexte, cliquez sur "Créer".

La clé de contexte est le nom qui sera affiché dans l'arborescence de gauche du manager avec les différentes ressources de chacun des contextes, et c'est le nom que vous devrez utiliser pour associer le deuxième nom de domaine à ce contexte. Choisissez un nom qui se reporte à votre deuxième site.

contexte MODx

Une fois créé, actualisez l'arborescence des ressources sur la gauche (en utilisant les flèches arrondies vertes) pour voir apparaître le nouveau contexte.

Afin de pouvoir tester correctement le fonctionnement des différents contextes, je vous conseille de créer une page de base pour les différents contextes avec un contenu différent pour chacun d'eux.

Suivez cet article pour voir comment créer une ressource sur MODx.

3. Paramétrer notre contexte secondaire

Nous devons maintenant paramétrer le contexte que nous venons de créer pour que notre nom de domaine se redirige sur les ressources de ce contexte.

Pour cela vous devez :

  • Retourner dans la liste des contextes Système > Contextes
  • Cliquer sur le bouton droit de votre souris sur le nouveau contexte créé précédemment.
  • Cliquer sur Mise à jour du contexte
  • Et cliquer sur l'onglet Paramètres du contexte
contexte MODx

Nous allons donc créer les différents paramètres qui correspondent à notre nouveau site.

Pour créer un nouveau contexte, cliquez sur Créer.

Sur la page qui s'ouvre, renseignez le champ Clé, Nom et Valeur pour les différents paramètres ci-dessous.

  • Page d'accueil
    • Clé : site_start
    • Nom : Accueil du site
    • Valeur : Id de la ressource correspondant à la page d'accueil de votre nouveau site.
  • URL de base
    • Clé : base_url
    • Nom : Url de base
    • Valeur : "/" sans les guillements - correspond à la racine du nouveau site
  • Url du domaine
    •  Clé : HTTP_HOST
    • Nom : Url du domaine
    • Valeur : votredomaine2.fr - URL de votre nom de domaine
  • Adresse du site
    • Clé : site_url
    • Nom : Adresse du Site Internet
    • Valeur : http://www.votredomaine2.fr - Adresse complète du Site Internet

Une fois ces contextes créés, vous devriez obtenir cette liste de paramètres. Vous pouvez en ajoutez d'autres selon vos besoins comme error_page.

contexte MODx

4. Rediriger le domaine sur le bon contexte (différentes options possibles)

Il existe deux possibilités dans la configuration de vos domaines. Ils peuvent soit utiliser les mêmes fichiers dans votre hébergement. C'est à dire qu'ils utilisent les mêmes images, photos ou autres fichiers. L'autre possibilité et de créer un dossier pour chacun des domaines afin de ne pas mélanger les différents fichiers sur votre hébergement.

Option 1 : Les domaines utilisent le même dossier de votre hébergement

Afin de définir quel contexte utiliser selon le domaine, il suffit de modifier le fichier index.php sur votre hébergement.

Il suffit de remplacer les deux lignes ci-dessous :

/* Initialize the default 'web' context */
$modx->initialize('web');

Par les lignes ci-dessous :

/* Setup context mapping */
switch ($modx->getOption('http_host')) {
 case 'votredomaine2.fr:80':
 case 'votredomaine2.fr':
  // if the http_host is of a specific domain, switch the context
  $modx->switchContext('Domaine2');
 break;
 default:
  // fallback, go to main context
  $modx->initialize('web');
 break;
}

Cette configuration permet de rediriger le domaine votredomaine2.fr vers le contexte Domaine2 de MODx, les autres domaines seront quant à eux redirigés vers le contexte par défaut "web".

Si vous voulez ajouter d'autres contextes, il vous suffira de copier le code qui commence en dessous de la ligne "switch" jusqu'au "break" en changeant le domaine votredomaine2.fr par le domaine qui correspond à vos différents contextes.

Si vos différents domaines sont bien configurés, vous pourrez maintenant voir les différents contextes sur vos différents noms de domaines.

Option 2 : un dossier différent pour chacun des domaines

Pour cette option, vous devez créer un dossier sur votre hébergement contenant les fichiers pour votre nouveau nom de domaine. Dans ce nouveau dossier, vous devez copier les fichiers .htacess, index.php et config.core.php de la racine. Vous pourrez également ajouter tous vos fichiers CSS, JavaScript et les images.

Afin que le nouveau nom de domaine soit bien redirigé sur le dossier que l'on vient de créer, il va falloir modifier le fichier .htaccess à la racine de votre hébergement (pas celui dans le dossier que l'on vient de créer). Ajoutez donc les lignes ci-dessous dans ce fichier .htaccess.

RewriteCond $1 !^foldername/
RewriteCond %{HTTP_HOST} ^www\.votredomaine2\.fr
RewriteRule (.*) /foldername/$1 [L]

foldername devra être remplacé par le nom que vous avez donné au dossier créé précédement.

Ensuite afin que le nom de domaine soit bien redirigé sur le contexte correspondant, vous allez devoir modifier le fichier index.php qui est cette fois dans le dossier que l'on a créé ci-dessus.

il faut donc modifier les 2 lignes ci-dessous :

/* Initialize the default 'web' context */
$modx->initialize('web');

Par les lignes ci-dessous:

/* Initialize the default 'web' context */
$modx->initialize('Domaine2');

Vous devez bien sur modifier Domaine2 par le nom que vous aurez donné au contexte correspondant à ce domaine.

Comme nous avons réalisé des modifications importantes sur notre fichier .htaccess, vous allez devoir indiquer que ces modifications doivent être prisent en compte seulement sur le domaine principal.

Pour cela vous devez donc ajouter la ligne en gras ci-dessous au niveau du script d'URL simple du fichier .htaccess à la racine :

# The Friendly URLs part - MUST BE SPECIFIC TO TOP-LEVEL HOST SO AS NOT TO CONFLICT WITH SUBFOLDER REDIRECTS
RewriteCond %{HTTP_HOST} ^www\.votredomaineprincipal\.fr
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php?q=$1 [L,QSA]

Remplacez bien sur votredomaineprincipal\.fr par votre domaine principal.

Cela permet donc de dire que ce fichier .htaccess est utilisé seulement pour le domaine principal et que les autres domaines auront leur propre fichier .htaccess qui se trouvera dans le dossier correspondant.

Ensuite dans chacun des fichiers .htaccess des domaines secondaires, supprimez le code et ajoutez celui ci-dessous.

RewriteEngine On
RewriteBase /

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?q=$1 [L,QSA]

il reste une dernière chose à faire qui consiste à faire pointer les différents sites enfant sur le coeur de l'application.

Si vous essayez d'accéder à votre site enfant, vous tomberez pour le moment sur une erreur 503. Cela signifie que votre passerelle ne peut pas localiser le coeur de l'application. Ouvrez donc le fichier config.core.php et effectuez les modifications ci-dessous.

Trouvez :

define('MODX_CORE_PATH', dirname(__FILE__) . '/core/');

Et changez ce code par :

define('MODX_CORE_PATH', '/home/example/public_html/core/');

/home/example/public_html/core/ est le chemin complet de votre site, vous devez le modifier en fonction de votre cas.

C'est terminé !!!!

Maintenant avec tout cela en place, vous pourrez continuer votre développement sur chacun des sites en utilisant des chemins absolus.

Vous pouvez bien sur réaliser cette action pour un nombre infini de noms de domaine.

Laissez un commentaire





Tags autorisés : <b><i><br>Ajouter un nouveau commentaire :


Commentaires (0)

En poursuivant votre navigation, vous acceptez l'utilisation des cookies pour disposer de services et d'offres adaptés à vos centres d'intérêts. Pour en savoir plus, cliquez ici.

x