FORK CPL 50209 - réécriture d'adresses

Fork CPL 50209 - Réécriture d'adresses :

J'ai relevé des problèmes sur un site installé sur un sous-répertoire si j'active la rééciture d'adresses dans config générale.

  • Dans le htaccess, la clause RewriteBase doit contenir le nom des sous-répertoires : /rep1/rep2/ si le site est http://monsite/rep1/rep2/.
  • Si le .htaccess est modifié manuellement, lorsqu'on inactive la reécriture d'adresse dans config générale, le htaccess, n'est pas modifié, ce qui fait que, à l'activation suivante, on a 2 fois les règles.

Il faut modifier la fonction setURLrewriting du fichier /inc/functions.php comme suit:

Remplacer la ligne 2444
    $stop     = '# URL rewriting'.chr(13).chr(10);
par    
    $stop     = '# URL rewriting';

ajouter après 2450
        $base     = substr($site[3],strpos($site[3],'/',8));    // pour les sites en sous-répertoire
        $uheader[5] = (strpos($uheader[5],'RewriteBase') !== FALSE) ? 'RewriteBase '.$base.chr(13).chr(10) : $uheader[5];

remplacer la ligne 2495
        if (!in_array($stop, $htaccess)) break;
par
       foreach ($htaccess as $hta)
            if (str_replace(chr(13),'',str_replace(chr(10),'',$hta)) != $stop) break;

remplacer la ligne 2502
    if ($hta != $stop) $st .= $hta; else break;
par
           if (str_replace(chr(13),'',str_replace(chr(10),'',$hta)) != $stop) $st .= $hta; else break;

Dans le fichier, les anciennes lignes sont conservées et annulées par //. Toutes les modifs sont repérées par une signature "CPL" et une date.


Date de création : 27/11/2019 - 21:24
Dernière modification : 29/11/2019 - 08:43
Catégorie : - FORK CPL 50209
Page lue 1509 fois