Problème de php : conflit avec l'URL Rewriting?

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Hyogapag
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 3 Mar 2005

Problème de php : conflit avec l'URL Rewriting?

Message le Jeu Mar 03, 2005 10:28

Bonjour, je débute en URL Rewriting, et j'aurais besoin d'un petit coup de main.^^ Déjà, voici mon .htaccess :

Code: Tout sélectionner
RewriteEngine on

RewriteCond %{HTTP_HOST} ^saintseiya.tv$
RewriteRule ^(.*)   http://www.saintseiya.tv/$1  [QSA,L,R=301]

RewriteCond %{HTTP_HOST} ^forum.saintseiya.tv$
RewriteRule ^(.*)   http://www.saintseiya.tv/forum$1  [QSA,L,R=301]

RewriteCond %{HTTP_HOST} ^saintseiya.tv/accueil.php$
RewriteRule ^(.*)   http://www.saintseiya.tv/accueil.html$1  [QSA,L,R=301]


RewriteRule ^(.+)\.html$  site.php?p=$1  [L]
RewriteRule ^(.+)/(.+)\.html$  site.php?d1=$1&p=$2  [L]
RewriteRule ^(.+)/(.+)/(.+)\.html$  site.php?d1=$1&d2=$2&p=$3  [L]
RewriteRule ^(.+)/(.+)/(.+)/(.+)\.html$  site.php?d1=$1&d2=$2&d3=$3&p=$4  [L]


En fait, le fichier site.php contient le graphisme du site, et au milieu se trouve un include qui intègre la page voulue du site. Voilà les quelques lignes qui y correspondent :

Code: Tout sélectionner
<td width="448" class="milieu">
<? @include '/home/web/saintseiya.tv/_administration/pages/milieu.php'; ?>
</td>


Le fichier milieu.php intègre la page au graphisme du site. Exemple : http://www.saintseiya.tv/accueil.html et http://www.saintseiya.tv/accueil.php

Où est le problème? En fait, je voudrais rajouter, juste au-dessus le l'include appelant milieu.php, cette ligne :
Code: Tout sélectionner
<? @include '/home/web/saintseiya.tv/_administration/pages/titre-rubrique.php'; ?>


Le fichier titre-rubrique.php permet d'appeler l'image titre de la rubrique de façon "automatisée". Seulement, quand je rajoute cette ligne de code dans site.php, c'est l'image correspondant à l'accueil qui s'affiche, et ce quelle que soit la rubrique! Si ça peut aider, voici le contenu de titre-rubrique.php :

Code: Tout sélectionner
<?     
 
@$dossier = $_GET['d1']; 
 
if ($dossier=='')
   {
   print "<img src='http://www.saintseiya.tv/_administration/images/titre_rubrique-accueil.gif' alt='' width='440' height='30'/>';
   }

else 
   {
   $strimg=''.$dossier.'';
   print "<img src='http://www.saintseiya.tv/_administration/images/titre_rubrique-".$strimg.".gif' alt='' width='440' height='30'/>"; 
   } 
 
?>


Et tant qu'on y est, le contenu de milieu.php^^
Code: Tout sélectionner
<?   

@$dossier = $_GET['d1'];
@$rub = $_GET['d2'];
@$s_rub = $_GET['d3'];
@$pag = $_GET['p'];

if($rub=='')                     // Si la variable $rub est vide
   {
   if ($dossier=='')               // Si la variable $dossier est vide
      {
      if($pag=='')
         {
         @include('accueil.php');
         }
      else
         {
         $url=''.$pag.'.php';
         @include ($url);         // On insère page.php
         }
      }
   else
      {
      $url=''.$dossier.'/'.$pag.'.php';
      @include ($url);            // On insère $dossier/page.php
      }
   } 
else                        // Si la variable $rub est remplie
   {
   if($s_rub=='')
      {
      $url=''.$dossier.'/'.$rub.'/'.$pag.'.php';
      @include ($url);
      }
   else
      {
      $url=''.$dossier.'/'.$rub.'/'.$s_rub.'/'.$pag.'.php';
      @include ($url);
      }
   }

?>


D'après mes associés, le problème vient d'un conflit avec l'URL Rewriting. Seulement là je suis dépassé.^^ Pourriez-vous m'aider s'il vous plait? Merci beaucoup.


Phix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 420
Inscription: 15 Juin 2004

Message le Jeu Mar 03, 2005 10:44

Je ne vois pas trop à quoi c'est du mais je te dois te prévenir d'une chose dans ton code, quant tu fais ca :
Code: Tout sélectionner
@$dossier = $_GET['d1'];
@$rub = $_GET['d2'];
@$s_rub = $_GET['d3'];
@$pag = $_GET['p'];

tu récupères les paramètres pour ensuite afficher la page, or tu ne vérifies même pas leur contenu! En faisant cela (et en plus en mettant ton code à découvert) tu t'exposes à de graves risques de hacking. Fais au moins ceci:
Code: Tout sélectionner
@$dossier = addslashes($_GET['d1']);
@$rub = addslashes($_GET['d2']);
@$s_rub = addslashes($_GET['d3']);
@$pag = addslashes($_GET['p']);

Ce sera une première sécurité.

Deuxièment, si tu enlevais les @ devant tes fonctions, tu pourras voir quelles erreurs sont rencontrées et ça pourrait t'aider un peu je pense...

Hyogapag
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 3 Mar 2005

Message le Jeu Mar 03, 2005 10:56

Pour ton premièrement : merci, je ne savais pas.^^
Pour le deuxièmement : j'ai enlevé le @ pour l'include concernant l'image, et ça ne change rien^^ Voir mes pages de test : http://www.saintseiya.tv/_administratio ... cueil.html
et http://www.saintseiya.tv/_administratio ... index.html
Bien sûr le dossier test2 contient : site.php, milieu.php, .htaccess, titre-rubrique.php^^

Il y a deux images qui s'affichent c'est normal : celle du haut est "automatisée", celle du bas mise manuellement.

Edit : j'ai aussi enlevé le @ dans titre-rubrique.php, au début je croyais que ça faisait une erreur mais c'était une faute de frappe de ma part, donc mon problème reste le même qu'au début.^^

Edit2 : en fait le script considère $dossier comme vide. Mais pourquoi?


Phix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 420
Inscription: 15 Juin 2004

Message le Jeu Mar 03, 2005 11:12

Apparemment ca viendrait d'un probleme des paramètres non?
Essaie, pour chaque page inclue d'afficher les paramètres, du genre:
Code: Tout sélectionner
echo "---> début milieu.php<br/>";
echo "d1: ".$_GET['d1']."<br/>";
echo "d2: ".$_GET['d2']."<br/>";
echo "---> fin milieu.php<br/>";";


Tu verras peut-être quel paramètre ne passe pas...


Phix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 420
Inscription: 15 Juin 2004

Message le Jeu Mar 03, 2005 11:17

essaie de remplacer:
Code: Tout sélectionner
RewriteRule ^(.+)\.html$  site.php?p=$1  [L]
RewriteRule ^(.+)/(.+)\.html$  site.php?d1=$1&p=$2  [L]
RewriteRule ^(.+)/(.+)/(.+)\.html$  site.php?d1=$1&d2=$2&p=$3  [L]
RewriteRule ^(.+)/(.+)/(.+)/(.+)\.html$  site.php?d1=$1&d2=$2&d3=$3&p=$4  [L]


par

Code: Tout sélectionner
RewriteRule ^(.+)/(.+)/(.+)/(.+)\.html$  site.php?d1=$1&d2=$2&d3=$3&p=$4  [L]
RewriteRule ^(.+)/(.+)/(.+)\.html$  site.php?d1=$1&d2=$2&p=$3  [L]
RewriteRule ^(.+)/(.+)\.html$  site.php?d1=$1&p=$2  [L]
RewriteRule ^(.+)\.html$  site.php?p=$1  [L]


dans ton .htaccess, ta première règle est toujours vraie donc tu ne peux pas accéder aux autres... Il faut toujours partir du cas le plus précis, au cas le plus général. (enfin je suis pas sur, je suis pas un pro de l'UR :wink: )

Hyogapag
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 3 Mar 2005

Message le Jeu Mar 03, 2005 11:26

Cool^^ maintenant il ne trouve pas l'image qui correspond. Mais au moins il la cherche, c'est déjà ça! merci beaucoup en tout cas!

Edit : c'est bon, tout est réglé! Merci beaucoup!!


Phix
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 420
Inscription: 15 Juin 2004

Message le Jeu Mar 03, 2005 11:34

De rien 8)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 2 invités