Aller au contenu

htaccess embêtant sur Free (une petite idée ?)


Sujets conseillés

Bonsoir,

Voici ce que j'ai mis dans mon htaccess :

ErrorDocument 404 /erreur404.php
ErrorDocument 403 /erreur403.php

Le probléme est que lorsque je tombe sur la page erreur404, je ne peux plus me déplacer à nouveau dans le site, je m'explique :

la racine de mon site est http://contyloeuillysc.free.fr/ puis je clique sur un lien erroné par exemple : http://contyloeuillysc.free.fr/site/presentation/index.php qui me renvoie vers erreur404.php.

Jusque là tout va bien.

Une fois mon erreur404.php affiché ok j'ai bien compris que le lien n'existait plus donc je veux retourner à la racine du site donc je clique sur accueil et là le hic :

observez toutes les url de la page erreur404 obtenu, ils conservent la base de la page erronée : http://contyloeuillysc.free.fr/site/presen...emesfichier.php alors que par exmeple si jeveux retourner à l'accueil je devrais avoir http://contyloeuillysc.free.fr/index.php et non http://contyloeuillysc.free.fr/site/presentation/index.php

Je précise que j'utilise des liens relatifs et non absolus comme bcp de monde sur ce site sur free.

Mon htacess est on ne peut plus simple; Je ne comprends pas.

A l'aide s'il vous plait.

Modifié par doomer2
Lien vers le commentaire
Partager sur d’autres sites

Je vois que beaucoup de monde lit mon petit probléme mais que personne n'a la solution. Cela m'inquiéte, j'ai bcp utilisez mon ami google et je ne trouve pas de solution non plus !!

Les liens sur votre fichier erreur404.php sont en absolu ou relatif ?

je vous mets le contenu de mon fichier erreur404.php :

<?php $chemin=".";

$referer = getenv('HTTP_REFERER'); // on récupère l'URL de la page d'origine
$uri = $_SERVER['REQUEST_URI']; // on récupère l'URL de la page cause de l'erreur
$ip_visiteur = $_SERVER['REMOTE_ADDR']; // on récupère l'IP du visiteur (pour stats - facultatif)
$date = date('d/m/y',time()); // on récupère la date de l'erreur (pour stats - facultatif)
$heure = date('h:m:s',time()); // on récupère l'heure de l'erreur (pour stats - facultatif)

// On décide d'envoyer cette erreur par mail : on prépare donc le contenu :
$contenu_mail = "
Erreur $erreur
Le $date à $heure
IP du visiteur : $ip_visiteur
Referer : $referer
URI : $uri ";

mail("****@****.**","$date : erreur $erreur",$contenu_mail,"From:erreurs@$erreur.site");

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Erreur 404</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr" />
<link rel="stylesheet" type="text/css" href="http://contyloeuillysc.free.fr/leger.css" title="Style par Defaut"/>
<link rel="stylesheet" type="text/css" href="http://contyloeuillysc.free.fr/print.css" media="print" />
</head>
<body>
<div id="conteneur">
 <? include ("$chemin/test/accessibilite.php"); ?>
 <h1 id="titre">Sporting Club Conty-Loeuilly<span id="feuille"></span></h1>
 <? include ("$chemin/test/menuhorizontal.php"); ?>
 <div id="gauche">
   <? include ("$chemin/test/menugaucheaccueil.php"); ?>
 </div>
 <div id="contenu">
   <div id="breadcumb">
     <?php include_once($chemin.'/test/breadcrumb.inc'); $breadcrumb = new breadcrumb; echo "<p>Vous êtes : ".$breadcrumb->show_breadcrumb()."</p>";?>
   </div>
   <p>
     <script type="text/javascript" src="date.js"></script>
   </p>
   <h2>Erreur 404 : cette page est introuvable ou n'est plus valide </h2>
......
...

J'obtiens bien mon mail avec le lien erroné mais aprés impossible de se déplace dans la feuille erreur404.php.

Par contre si dans le .htaccess je remplace :

ErrorDocument 404 http://contyloeuillysc.free.fr/erreur404.php

Dans mon mail je n'obtiens plus $uri mais maintenant je peux me déplacer dans mon fichier erreur404.php car les liens sont correctes.

Je ne sais pas quoi faire.

Modifié par doomer2
Lien vers le commentaire
Partager sur d’autres sites

Tu peux modifier les liens de la page 404 et rajouter un / devant chaque url, ce qui aura pour effet de reconsidérer les liens à partir de la racine du site.

Tu peux aussi spécifier un le tag base dans la partie head du code html:

<base href="http://contyloeuillysc.free.fr/" />

Mais il faut un lien absolu dans ce cas :/

Tu peux aussi réaliser une page 404.php qui fera une redirection par header et menera à une page 404 situé à la racine, le soucis c'est qu'il faut là aussi l'url absolue :/

<?php
header("HTTP/1.1 302");
header("location: http://contyloeuillysc.free.fr/erreur404.php");
?>

Mais si les liens absolus te dérenge simplement au cas où tu changerai d'adresses: tu peux te servir de php, pour retrouver le chemin absolu:

$url_abs = "http://" . $_SERVER['HTTP_HOST'] . ($_SERVER['SERVER_PORT'] == '80'? '': ':' . $_SERVER['SERVER_PORT']) . "/";

Lien vers le commentaire
Partager sur d’autres sites

C'est pas un gros problème.

Le problème est que tu défini une variable $chemin que tu ne maitrise pas : l'erreur peut survenir depuis n'importe quelle page de l'arborescence.

essaie

$chemin="http://contyloeuillysc.free.fr/";

le plus simple pour gérer l'arborescence est d'utiliser le <base href=&quot;http://contyloeuillysc.free.fr/" />

edit: avec un train de retard :blush:

Modifié par jeroen
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...