Aller au contenu principal

Pop up

Drupal : rediriger votre site vers un sous répertoire

Dans les hebergements mutualisés le domaine principale pointe sur /public_html. Ce comportement par defaut peu poser quelques soucis si votre installation de Drupal separe index.php et vendor.


Pour regler le probleme nous allons prendre un cas pratique.

Nous avons une installation Drupal qui suit la logique suivante:

  •  public
  •  public/web/index.php
  •  public/vendor/

Nous compressons notre le dossier public et le mettons le dossier public_html sur le serveur. Ensuite on dezzipe et on a : public_html/public/.

Pour acceder au site : il faut ecrire : mon.domaine.com/public/web, 

Pour pouvoir acceder au site directement à partir du domaine nous devons :

- Ajouter à la racine du serveur un fichier .htaccess

RewriteEngine on
# Rediregiger vers un sous parrent.
RewriteCond %{HTTP_HOST} ^(www\.)?mondomaine\.com$
RewriteCond %{REQUEST_URI} !core/authorize.php
RewriteRule !^public/web/  /public/web%{REQUEST_URI}   [L]

- Ajouter la ligne suivante à la fin du fichier settings.php

# Pour la redirection.
if (isset($GLOBALS['request'])) {
  if ('/public/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
    $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
  }
  elseif ($GLOBALS['request']->server->get('SCRIPT_URL') === '/core/authorize.php') {
    $GLOBALS['request']->server->set('SCRIPT_FILENAME', '/public/web/core/index.php');
  }
}
# Vous pouvez également utiliser le chemins absolue complet
if (isset($GLOBALS['request']) and '/public/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
  $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}





 

Stephane K

Écrit le

Il y'a 10 months
Modifié
Il y'a 5 months
Loading ...