erreur 404 et composant redirections de joomla compatibles?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • erreur 404 et composant redirections de joomla compatibles?

    Bonjour à tous!

    J'ai un site multilingue, je désire afficher une page 404 personnalisée en cas de lien inconnu en général (style: url avec erreur de frappe) et rediriger d'anciens url connus devenu obsolètes vers des nouveaux url.

    Pour afficher la page 404 personnalisée, j'ai modifié le fichier error.php avec le code suivant:

    if (($this->error->getCode()) == '404') {
    header('Location: ./index.php?option=com_content&view=article&id=18');
    exit;
    }
    Pour rediriger les anciens url (ce sont des liens qui ont changé suite à un changement de langue: "en" est devenu "en-us"), j'ai activé le composant joomla redirections.


    Problème: Cela fonctionne quand je travaille en local mais pas quand le site est en ligne!

    En local, je configure par exemple la redirection comme suit: URL obsolète = /en/products Nouvelle URL = http://localhost/www.xxx.com/en-us/products et c'est OK la bonne page s'affiche.

    En online, je configure par exemple la redirection comme suit: URL obsolète = /en/products Nouvelle URL = http://www.xxx.com/en-us/products et cela ne fonctionne pas, j'ai la page 404 qui s'affiche sur la homepage du site avec un url en format "www.xxx.com/en/index.php?option=com_content&view=article&id=18'" (index.php?option=com_content&view=article&id=18 étant l'url permettant d'afficher la page 404 et "/en/" n'existant plus).

    Est-ce qu'une personne plus qualifiée que moi pourrait me dire où je fais faux?

    Merci d'avance

  • #2
    Je peux donner une piste multilingue dès demain.
    Je lai déjà donnée sur le forum il y a quelques mois mais ne la retrouve pas.
    Cordialement.
    __
    Eddy !!!
    Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

    Commentaire


    • #3
      Bonjour.

      Voici comment je procéde personnellement pour avoir une unique page d'erreur 404 personnalisée multilingue.
      1. Télécharger et installer UP de Lomart en complet (d'autres de ses fonctions pourraient éventuellement t'être utiles) ou en min. (si min., télécharger l'action Filter et l'installer).
        Ce plugin et cette action permettent d'afficher du texte selon la langue du visiteur (entre autres multiples possibilités).
      2. Préparer un article Toutes langues contenant les textes d'erreur à l'aide du plugin de lomart, je prend ici le modèle Filter de UP et dans l'article il suffit de placer les textes des différentes langues entre les shortcodes comme suit :
        {up filter | lang=fr}Texte de la page d'erreur en français{/up filter}
        {up filter | lang=en}Texte de la page d'erreur en anglais{/up filter}
        {up filter | lang=de}Texte de la page d'erreur en allemand{/up filter}

        etc.
        Si on se limite à deux langues on peut simplifier comme suit {up filter | lang=fr}Textes en français {====}Textes en seconde langue{/up filter}
      3. Préparer un lien de menu caché (toutes langues) menant vers cet article.
      4. Dans la page d'erreur du template, insérer le code suivant : en adaptant aliasDuLienDeMenu.html à ta situation.
        Code:
        <?php
        	/**
        	* @package     Joomla.Site
        	* @subpackage  Template.system
        	*
        	* @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
        	* @license     GNU General Public License version 2 or later; see LICENSE.txt
        	*/
        
        	defined('_JEXEC') or die;
        
        	/** @var JDocumentError $this */
        
        	if (!isset($this->error))
        	{
        	  $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
        	  $this->debug = false;
        	}
        
        	$app = JFactory::getApplication();
        	if (($this->error->getCode()) == '404') {
        	header('Location: ' .$this->baseURL . '[B]aliasDuLienDeMenu.html[/B]'); // p.ex. 'erreur.html'
        	exit;
        	}
        	?>
      5. Enregistrer, fermer le fichier et tester volontairement une erreur dans chaque langue.
      En espérant que cela pourra te convenir.

      Pour les redirections, il faudra je pense utiliser les URL absolues et non relatives mais je peux me tromper.
      Je pense aussi, mais il faudra quelqu'un de plus doué que moi pour la formule, qu'il est possible de généraliser la redirection site/en/urlQuelconque vers site/en-us/mêmeURL via le htaccess et une expression régulière…
      Dernière édition par Eddy.vh à 03/04/2019, 09h15
      Cordialement.
      __
      Eddy !!!
      Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X