8721 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai fait quelques changements d'arborescence sur ma boutique Prestashop (suppression de catégories) et ai donc fait des redirectmatch dans mon .htaccess.
Je ne sais pas si c'est une conséquence, mais dans ma google console, je viens de remarquer des erreurs 404 parce que j'ai des slashes à la fin de certaines URL : https://xxx.fr/fr/310-patron-xx-xx-xx.html style="color:red">/
J'ai passé des heures à chercher des pistes, mais :
1- D'où ça vient ?
2- surtout quelle règle mettre dans mon .htaccess pour corriger ça ?
Mes cheveux comptent sur vous...
Merci d'avance Smiley cligne
Salut,

nos yeux comptent sur toi. Peux tu reprendre ton post initial et l'écrire de façon claire pour que l'on puisse t'aider ?
Les "/" à la fin des chemins indiquent que ce chemin est un répertoire, et que l'on s'attend à ce que le serveur aille chercher un fichier index.php un index.php dans ce répertoire.
Par ailleurs l'exemple donné est un parfait non-sens:
  https://xxx.fr/fr/310-patron-xx-xx-xx.html  style="color:red">/
@SuperMerguez
Houlàlà, j'avais pas vu la présentation que ça avait fait, désolé pour les yeux Smiley confus
Donc mon exemple c'est https://monsite.fr/fr/310-patron-1.html/
Je souhaite donc enlever le / final qui me donne une erreur 404 (sans, le lien est bon)

@PapyJP
Je ne sais pas d'où sort le style="color:red"> à la suite de l'url, désolé.
Ben oui, c'est bien là mon problème, je n'ai aucun répertoire de ce nom puisque c'est une fiche produit

Merci d'avance pour votre aide
Si c'est une fiche produit, ce n'est pas un répertoire, donc le "/" est en trop
Il se peut que le serveur ait changé sa façon d'interpréter de telles adresses, que ça fonctionnait pendant un certain temps et que ça ne fonctionne plus, j'ai déjà rencontré de problèmes de ce genre.
Une façon de traiter le problème, si c'est trop compliqué de changer les adresses, c'est de faire un programme php qui récupère les adresses 404, analyse l'adresse et redirige en conséquence vers la bonne adresse.
Une autre façon de faire serait de jouer sur les règles de redirection dans .htaccess, mais je ne peux pas te donner de conseils de ce côté là, c'est un domaine que je connais très mal, et à chaque fois qu'il faut toucher à .htaccess c'est pour moi la croix et la banière.
A noter que certaines directives ne fonctionnent pas de la même manière selon les versions des serveurs Apache, et surtout, me semble-t-il de la façon dont l'hébergeur a configuré le système, ce qui ne facilite pas le travail.

Exemple de récupération des erreurs 404:
Dans .htaccess:
ErrorDocument 404 /error404.php


Dans le programme error404.php, quelque chose comme:

$userURI = $_SERVER['REQUEST_URI'];
	$fileName = parse_url($userURI,  PHP_URL_PATH);
	if(preg_match('#.html?/$#', $fileName)) {
		$altFile = preg_replace('#/$#', '', $fileName);
		if(file_exists($_SERVER['DOCUMENT_ROOT'] . $altFile)) {
			header('Location: ' . $altFile);
			die();
		}
	}
	........

Modifié par PapyJP (17 Oct 2017 - 18:15)