Modification d'une variable

Nouveau WRInaute
Bonjour,

J'aimerai convertir une adresse d'une façon un peu spécial et malgré quelques recherches sur le forum je n'ai pas réussi à trouvé une solution.

Mon adresse est de la forme : www.site.net/index.php?option=com_conte ... Itemid=118

et j'aimerai qu'elle devienne : www.site.net/index.php?option=com_conte ... Itemid=119

En faite il faudrait que quelque soit l'adresse, l'Itemid change et devienne 119.

Je ne sais pas si j'ai bien expliqué auquel cas j'essayerai de réexpliquer.

Merci d'avance.
 
WRInaute impliqué
Faut savoir si c'est uniquement pour cette page ou d'autres déjà et savoir avec quoi est programmé ton site.
 
WRInaute impliqué
hummm
dans ta page php, tu mets

Code:
<?
if ( $Itemid == 118 ) $Itemid = 119;
?>

(ou $_GET["Itemid"] si Register global est à Off dans php.ini)
 
WRInaute impliqué
Ca crée un duplicate content du coup...

Faudrait une redirection 301 plutôt que la modification de la variable directement.
 
WRInaute accro
NxtGen a dit:
hummm
dans ta page php, tu mets

Code:
<?
if ( $Itemid == 118 ) $Itemid = 119;
?>

(ou $_GET["Itemid"] si Register global est à Off dans php.ini)

prend pour habitude de passer par $_GET ou $_POST car en php 6 cela sera la seule methode pour acceder a ces variables qui sont dans un tableau global.

@petitpolak

humm, je dirais impossible en .htaccess

Mais pas pour PHP

Place ce code dans ton header, il fait la redirection dont tu as besoin.

Code:
<?php     $uri = $_SERVER["REQUEST_URI"];
          $rel = strstr($uri,'index.php?option=com_content&task=view');
          if($rel != FALSE) {
          $Itemid = $_GET["Itemid"]; $Itemid++;
          $id = $_GET["id"];
          header("Status: 301 Moved Permanently");
          header("Location: http://www.site.net/index.php?option=com_content&task=view&id=".$id."&Itemid=".$Itemid."");
          } ?>
 
Nouveau WRInaute
Dommage pour le htaccess j'aurai préféré.

J'ai testé ton code PHP et il marche parfaitement. Je l'ai juste un peu adapté pour qu'il concerne un Itemid spécifique :

Code:
<?php
	$uri = $_SERVER["REQUEST_URI"];
	$rel = strstr($uri,'index.php?option=com_content&task=view');
	$Itemid = $_GET["Itemid"];
	if($rel != FALSE && $Itemid == "117") { 
		$Itemid = "118"; 
		$id = $_GET["id"]; 
		header("Status: 301 Moved Permanently"); 
		header("Location: index.php?option=com_content&task=view&id=".$id."&Itemid=".$Itemid.""); 
	}
?>

Merci beaucoup :wink:
 
WRInaute accro
soyons clair, si il s'agit d'une redirection massive, cela n'est pas possible ou alors je ne sais pas comment, mais si c'est juste d'une page a l'autre et tu n'a que 2 ou 3 actions a faire, un redirect devrait suffir :

Code:
RedirectPermanent /index.php?option=com_content&task=view&id=121&Itemid=118   http://www.site.ext/index.php?option=com_content&task=view&id=121&Itemid=119
 
Nouveau WRInaute
Oui je connais la méthode du RedirectPermanent mais il s'agit bien d'une redirection massive. Merci quand même. De toute facon avec le script php j'arrive a faire ce que je veux donc tant que sa marche c'est bon :wink:
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut