Rediriger 404 vers index ?

noogatynoogaty Member
novembre 2019 modifié dans Entraide
Salut à tous,
J'ai créé le site d'un restaurant sous PluXml.
Mais j'ai un problème avec Tripadvisor (qui est indispensable pour un resto) ... :|
Le lien de Tripadvisor m'ajoute à l'adresse :
https://lesite.ext/?utm_source=tripadvisor&utm_medium=referral
Ce qui me redirige vers ma page erreur et non vers l'index du site.
C'est un site "onepage", donc tout se trouve sur l'index (menu, photos etc ...)
J'ai ajouté dans le htaccess cette redirection :
ErrorDocument 404 https://lesite.ext
Mais ça fonctionne sur Edge, mais pas avec Firefox ...
Y aurait-il un moyen de ne pas rediriger vers la page erreur.php, mais plutot sur l'index du site ?
Si quelqu'un a une idée pour régler mon problème, je cherche depuis plusieurs jours sans trouver de solution ... :(
Merci ! ;)
«13

Réponses

  • Up !

    Personne n'aurait une idée de solution à mon problème ? :(
  • Faudrait plutôt régler ton problème d'erreur 404 :)

    Tu peux nous recopier ton fichier .htaccess complet stp ?

    D'autre part, utilises-tu la redirection d'URL native de PluXml ou le plugin MyBetterUrl ?
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2018 modifié
    Il faudrait modifier le query_string dans l'uri et je ne suis pas sûr que cela soit possible avec .htaccess

    Si c'est le cas, il faut écrire un petit plugin qui attrape le hook "plxMotorPreChauffageBegin" pour initialiser $this->get à false.

    S'il y a urgence tu peux utiliser la methode suivante :
    Dans le fichier core/lib/class.plx.motor.php, à la fonction plxMotor::prechauffage(), modifie la ligne
    [== PHP ==]
    elseif(!$this->get OR preg_match('/^(blog|blog\/page[0-9]*|\/?page[0-9]*)$/',$this->get)) {
    
    par
    [== PHP ==]
    elseif(true or !$this->get OR preg_match('/^(blog|blog\/page[0-9]*|\/?page[0-9]*)$/',$this->get)) {
    
    Mais c'est une méthode "gros bourrin" !

    J'ai le même souci lorsque je démarre le déboggueur Xdebug avec Netbeans. Mais cela ne passe qu'au démarrage.
  • kowalsky a écrit:
    Faudrait plutôt régler ton problème d'erreur 404 :)

    Tu peux nous recopier ton fichier .htaccess complet stp ?

    D'autre part, utilises-tu la redirection d'URL native de PluXml ou le plugin MyBetterUrl ?
    Ah mais je n'ai pas d'erreur 404 sur mon site !
    C'est Tripadvisor qui m'en créé une en ajoutant à l'URL de mon site : ?utm_source=tripadvisor&utm_medium=referral
    Aucune réécriture d'URL, car comme je l'ai dis, c'est un site Onepage, donc aucun besoin de réécrire les pages puisqu'il n'y a que la page index, et la page "mentions légales" (qui n'est pas importante pour le référencement).


    bazooka07, il n'y a pas vraiment d'urgence, mais c'est juste embêtant car quand les visiteurs de Tripadvisor veulent venir faire un tour sur le site, il arrive sur une page "La page que vous avez demandée n'existe pas" et ils sont donc obligé de cliquer sur "Accueil" pour avoir le site, en espérant qu'ils y pensent ... :|

    Pour vous donner une idée, la page de Tripadvisor est là :https://www.tripadvisor.fr/Restaurant_Review-g187103-d1322161-Reviews-Le_Galopin-Rennes_Ille_et_Vilaine_Brittany.html
    Cliquez sur "Site Web" pour voir ce que cela donne.

    Créé un Plugin est beaucoup trop complexe pour moi ... :|

    Sinon, n'y aurait-il pas une solution d'échanger la page erreur.php par la page index ? C'est à dire, au lieu de rediriger le site quand la page n'existe pas vers la page erreur.php, vers la page index du site ?

    Merci en tout cas de vous pencher sur mon problème ! ;)
  • zakar!zakar! Member
    octobre 2018 modifié
    Dans ton fichier .htaccess, ajoute ces lignes juste avant </IfModule> :
    redirect 301 /?utm_source=tripadvisor&utm_medium=referral https://www.legalopin.fr
    

    Ou en remplaçant le fichier erreur.php de ton thème par (sauvegarde ce fichier au cas ou) :
    [== PHP ==]
    <?php 
       header("Status: 301 Moved Permanently"); 
       header("Location:https://www.legalopin.fr"); 
    ?>
    
    Ce dernier n'est vraiment pas recommandé dans le cas d'un site avec plusieurs pages et/ou articles !
    C'est vraiment parce que tu est sur du ONE page ;)
  • zakar!, j'ai déjà aussi essayé toutes ces redirections et ça ne fonctionne pas ...
    Pour la redirection 301 dans la htaccess, aucun changement sous Firefox. (même après avoir vidé le cache)
    Pour la redirection php, je me retrouve avec une page blanche ... :|
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2018 modifié
    @noogaty,
    Il n'y a pas urgence mais il y a du business derrière pour ton client.
    Et verser une commission à TripAdvisor pour envoyer des clients dans le décor, c'est pas trop cool !

    Modifie la fonction "public function prechauffage()" dans le fichier core/lib/class.plx.motor.php comme suit ( voir contenu des parenthèses après "elseif" :
    [== PHP ==]
    public function prechauffage() {
    
    		# Hook plugins
    		if(eval($this->plxPlugins->callHook('plxMotorPreChauffageBegin'))) return;
    
    		if(!$this->get AND $this->aConf['homestatic']!='' AND isset($this->aStats[$this->aConf['homestatic']]) AND $this->aStats[$this->aConf['homestatic']]['active']) {
    			$this->mode = 'static'; # Mode static
    			$this->cible = $this->aConf['homestatic'];
    			$this->template = $this->aStats[ $this->cible ]['template'];
    		}
    		elseif(
    			empty($this->get) OR
    			preg_match('@^(blog|blog\/page[0-9]*|\/?page[0-9]*)$@', $this->get) or
    			!preg_match('@^(?:article|static|categorie|archives|tag|preview|telechargement|download)[\b\d/]+@', $this->get)
    		) {
    			$this->mode = 'home';
    
    Fais une sauvegarde du fichier avant par précaution ( pour les erreurs de frappe au clavier )
    Cela évitera d'installer un plugin supplémentaire. Pour moi, cela corrige un bug dans PluXml. J'enverrai un "pull request" mais vue la cadence des mises à jour, cela risque de passer inaperçu pendant longtemps.

    P.S. : Ta page est codée en UTF-8. Donc inutile de remplacer les lettres accentuées par les entités HTML.

    Note au staff
    Si le test sur ce "elseif" échoue, la probabilité que "$this->get" ne soit pas nul est de 100% !!
    "souci d'optimisation" où est tu ? :D
  • Pour info, j'ai fait le test sur mon site en rajoutant "?utm_source=tripadvisor&utm_medium=referral" et ça m'envoie en erreur 404 aussi.

    Donc ça doit être plus général, et pas forcément lié à Tripadvisor.

    Faut voir ce que donne la solution de bazooka07 car pour ton client qui a l'air bien référencé, c'est effectivement une perte potentielle de clientèle.
  • Juste une précision, si j'ai bien compris bazooka07 : j'ai juste à ajouter le "elseif" que tu cites avant les autres, c'est bien ça ? :/

    Quand ça touche au "motor", j'ai toujours un peu peur de faire une bêtise ... Mais j'ai déjà sauvegardé l'original ...
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2018 modifié
    Non !
    Il n'y a pas de elseif à ajouter.
    Il faut remplacer tout le contenu entre parenthèses. Le test précèdent n'est pas correct.

    Tu as le source complet de la fonction ici :
    https://kazimentou.fr/divers/PluXml/plxmotor-prechauffage.php

    https://pastebin.com/SUvDJdNa Valable un mois
  • J'ai changé tout le "prechauffage" par le fichier que tu donnes bazooka07, mais aucun changement ?
    J'ai fais une erreur quelque part ? :/
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2018 modifié
    Le lien vers https://kazimentou.fr affiche une page statique avec la coloration syntaxique d'un script PHP.

    Pour recopier le code PHP, cliquer sur le lien ci-dessous et sélectionner "raw" ou "download" avant de télécharger
    https://pastebin.com/SUvDJdNa

    Démo en ligne avec une vresion fraiche de PluXml 5.6 :
    http://kazimentou.free.fr/?utm_source=tripadvisor&utm_medium=referral

    Même chez Free.fr, ils ont tout compris.
  • Ok, merci bazooka07 ! ;)

    Je vais m'y pencher plus sérieusement ce week-end.
  • noogatynoogaty Member
    octobre 2018 modifié
    Re,

    Après quelques recherches et des mises à jour de pluXml (j'étais en 5.3 ... :8 ) et après avoir appliqué ta modif bazooka07, ça ne fonctionne pas ... :(

    Je ne comprends pas d'où vient le problème, car avec ton site test sur Free, ça fonctionne bien !

    Vous pouvez faire le test avec le lien de Tripadvisor ...

    bazooka07, aurais tu une idée d'où pourrait venir le problème ?

    Ne serait-ce pas un problème de mon hébergement ?

    Là, je sèche ... :/

    PS : bazooka07, tu as une erreur sur la page :https://kazimentou.fr/categorie1/bidouilles


    [Edit]Ce n'est pas à cause de mon htaccess, j'ai fais un test en le supprimant et en vidant mon cache et c'est toujours pareil.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    Je t'ai donné la modif à faire pour la version 5.6 de PluXml, pas pour une antique version.

    Il est possible que la mise à jour depuis la version 5.3 se soit mal passée.

    Le mieux est d'installer dans un dossier à part la dernière version publiée de PluXml et d'y copier ton dossier de données actuel.
    Pour ton thème, cela risque d'être plus compliqué. Commence par voir si le thème par défaut fonctionne.

    Pour mon site, il manque un template pour mon dernier thème. Pas grave !
  • Bon, j'ai essayé sur une installation toute neuve ...
    Ca fonctionne quand il n'y a rien, mais dès que j'ajoute mes fichiers "data", ça ne fonctionne plus ... Même avec le thème par défaut. :(
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bizarre !

    Que dit ton fichier de log sur le serveur ?

    Si tu m'envoies un lien en privé vers une archive zip de ton dossier data, je veux bien y jeter un oeil.
  • Rien de spécial de les log ... :/

    Je t'envoie mon dossier Data en MP ! ;)

    Merci à toi ! ;)
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2018 modifié
    noogaty a écrit:
    Bon, j'ai essayé sur une installation toute neuve ...
    Ca fonctionne quand il n'y a rien, mais dès que j'ajoute mes fichiers "data", ça ne fonctionne plus ... Même avec le thème par défaut. :(
    Normal !

    Tous les articles sont dans une catégorie et toutes les catégories ne doivent afficher aucun article.

    Dans le dossier "data/images/.thumbs/" effacer tout pour que PluXml recrée des aperçus d'images.
  • J'ai supprimé tout ce qu'il y avait dans .thumbs, mais c'est toujours pareil.
    J'ai loupé quelque chose ? :/
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Choisis une catégorie et fait afficher les articles pour cette catégorie.

    Sans avoir ton thème sous les yeux, je ne peux pas t'en dire mieux
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    octobre 2018 modifié
    Avec le thème par défaut de PluXml et les desserts en page d'accueil. Et TripAdvisor chez Free.fr
    http://kazimentou.free.fr/galopin/?utm_source=tripadvisor&utm_medium=referral

    Tu dois pouvoir te connecter à l'adresse ci-dessus avec tes identifiants (login et mot de passe). Par contre, tu n'as que des droits de gestionnaire.

    Essaie de mettre des mots significatifs à tes fichiers photos.
    Parce que "01.jpg" à la place de "homard-a-l-americaine.jpg" cela ne va pas aider à faire tourner le commerce.
  • Merci beaucoup bazooka07 pour ta patience, j'y suis enfin arrivé ! :D

    J'ai compris qu'en activant les articles sur une catégorie, ça fonctionne ! Sauf que cela me renvoie sur la page home.php, donc la page d'accueil du blog ...

    Sauf que j'ai une page perso "static-home.php" pour afficher mon site.

    J'ai donc voulu changer cette page template, en passant par "paramètres", "option d'affichage", sauf que ce n'est pas possible de changer le template de la page d'accueil de home.php, vers static-home.php ...

    Je suis donc passé par le fichier "parametres.xml" du dossier data/configuration, et j'ai modifié manuellement :
    <parametre name="hometemplate"><![CDATA[home.php]]></parametre>
    

    Par :
    <parametre name="hometemplate"><![CDATA[static-home.php]]></parametre>
    

    Et donc maintenant, cela me renvoie bien sur la page d'accueil du site, et non de la page blog ! :)


    Par contre, je n'ai plus les photos affichées par le plugin ArtGalerie quand la page est affichée avec le ?utm_source=tripadvisor&utm_medium=referral de Tripadvisor ... :/
    Et quand on clique sur "accueil", les photos s'affichent.
    Je vais donc continuer à chercher ce petit bug, mais c'est déjà mieux qu'avant, en arrivant sur une page "la page que vous demandez n'existe pas" ! :D

    PS : bazooka07 je t'avais envoyer mon thème par mail, tu ne l'as pas reçu ?
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    novembre 2018 modifié
    Pour la page d'accueil, il faut cliquer "page statiques" dans la sidebar de l'administration et cocher une page statique pour la page d'accueil.
    Ensuite éditer la page statique et choisir éventuellement un template ( static-home.php ? )

    Non, je n'ai pas reçu ton thème. Envoie le moi avec ton dossier de plugin pour que j'ai les versions de plugins que tu utilises (ArtGalerie ?).

    Passe par PluXml comme pour le fichier data.zip. Il y a un tri automatique dans ma boite mail pour tout ce qui vient par PluXml.
  • Ok, je te le renvoie par le forum ! ;)
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    C'est bon je l'ai reçu.
    J'étudie cela dès que j'ai un moment.

    Pour info Free.fr permet aussi de partager des fichiers
    http://dl.free.fr/
  • Merci bazooka07 ! ;)
  • aruhunoaruhuno Member
    novembre 2018 modifié
    Bonjour,

    Ayant le même soucis, j'essaye de rattraper mon retard... Disposant d'un plugin faisant plusieurs choses sur mon site, je me suis dis qu'il suffisait d'appliquer le conseil suivant :
    bazooka07 a écrit:
    Si c'est le cas, il faut écrire un petit plugin qui attrape le hook "plxMotorPreChauffageBegin" pour initialiser $this->get à false.

    Ce qui dans mon plugin donne ça :
    public function plxMotorPreChauffageBegin() {
    	$this->get = false;
    }
    

    Malheureusement, cela ne change rien au problème, ai-je raté quelque chose ?

    Pour information, le code suivant me retourne "NULL" :
    public function plxMotorPreChauffageBegin() {
    	echo "<pre>"; var_dump($this->get); echo "</pre>"; exit;
    }
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    aruhuno a écrit:
    Malheureusement, cela ne change rien au problème, ai-je raté quelque chose ?

    Oui !
    Comme tu l'as écrit $this fait référence à ton plun et non au moteur $plxMotor de PluXml;

    Il faut faire de l'injection de code PHP pour corriger le bug de PluXml.
    Ou attendre que le pull-request que j'ai envoyé soit validé.
    Ce qui risque de prendre pas mal de temps vu la "mise en sommeil" de Stéphane
  • aruhunoaruhuno Member
    novembre 2018 modifié
    bazooka07 a écrit:
    Oui !
    Comme tu l'as écrit $this fait référence à ton plun et non au moteur $plxMotor de PluXml;
    Effectivement, ça passe avec ça :
    public function plxMotorPreChauffageBegin() {
    	$plxMotor = plxMotor::getInstance();
    	$plxMotor->get = false;
    }
    

    Par contre je ne peux plus changer de page, ça m'affiche toujours la même (home.php) ><

    edit: je viens de voir que noogaty n'utilisais pas MyBetterURL... problème différent donc =\
Connectez-vous ou Inscrivez-vous pour répondre.