.htaccess, redirection et référencement

Nouveau WRInaute
Bonjour à toutes et à tous,

Dans mon fichier htaccess, j'utilise actuellement le code suivant :
Code:
RewriteEngine On
RewriteRule ^(.*)\.html $1\.php [L]

Quand j'écris www.mon-site.com/page.html il m'affiche bien la page .php donc tout vas bien.

Par-contre, quand j'écris www.mon-site.com/page.php l'extension php n'est pas remplacé par .html ce qui je pense, est un problème.

Actuellement mon site est référencé avec l'extension .html mais, comme mes pages sont accessibles avec les deux extensions j'ai peur que google référence aussi les .php et du coup créé un "duplicate content" néfaste.

Merci par avance pour votre aide,
 
WRInaute impliqué
Salut
Essaie d'ajouter :
Code:
RewriteRule ^(.+).php$ $1.html [NC,L,R=301]

Et si jamais ça causait une boucle de redirection (je n'ai pas testé), tu peux toujours ajouter dans le php un truc du genre :
Code:
$url_ici = $_SERVER['REQUEST_URI']; // URL en cours
$tab = explode(".",$url_ici); // on découpe l'URL en un tableau pour isoler l'extension
if(end($tab) == "php"){ // si c'est un .php
 $nv_url = implode(".",array_pop($tab)).".html"; // on remplace .php par .html
 header("HTTP/1.0 301 Moved Permanently");
 header("Location: ".$nv_url); //et on redirige vers la page.html
 exit();
}
 
Nouveau WRInaute
Schwarzer Stern a dit:
Salut
Essaie d'ajouter :
Code:
RewriteRule ^(.+).php$ $1.html [NC,L,R=301]

Et si jamais ça causait une boucle de redirection (je n'ai pas testé), tu peux toujours ajouter dans le php un truc du genre :
Code:
$url_ici = $_SERVER['REQUEST_URI']; // URL en cours
$tab = explode(".",$url_ici); // on découpe l'URL en un tableau pour isoler l'extension
if(end($tab) == "php"){ // si c'est un .php
 $nv_url = implode(".",array_pop($tab)).".html"; // on remplace .php par .html
 header("HTTP/1.0 301 Moved Permanently");
 header("Location: ".$nv_url); //et on redirige vers la page.html
 exit();
}

Merci pour cette réponse rapide.

Quand j'insère ce code dans ma page, et que je cherche à afficher www.mon-site.com/ma-page.php il m'affiche www.mon-site.com/.html

Code:
$url_ici = $_SERVER['REQUEST_URI']; // URL en cours
$tab = explode(".",$url_ici); // on découpe l'URL en un tableau pour isoler l'extension
if(end($tab) == "php"){ // si c'est un .php
 $nv_url = implode(".",array_pop($tab)).".html"; // on remplace .php par .html
 header("HTTP/1.0 301 Moved Permanently");
 header("Location: ".$nv_url); //et on redirige vers la page.html
 exit();
}
 
WRInaute impliqué
Euh oups bon je n'avais pas testé, du coup petite erreur désolé ! Remplace :
Code:
 $nv_url = implode(".",array_pop($tab)).".html"; // on remplace .php par .html


par
Code:
 array_pop($tab);
 $nv_url = implode(".",$tab).".html"; // on remplace .php par .html
 
Nouveau WRInaute
Je ne me suis pas trompé ? C'est bien ton code modifié ?
Code:
<?php
		$url_ici = $_SERVER['REQUEST_URI']; // URL en cours
		$tab = explode(".",$url_ici); // on découpe l'URL en un tableau pour isoler l'extension
		if(end($tab) == "php"){ // si c'est un .php
			 array_pop($tab);
		 $nv_url = implode(".",$tab).".html"; // on remplace .php par .html
		 header("HTTP/1.0 301 Moved Permanently");
		 header("Location: ".$nv_url); //et on redirige vers la page.html
		 exit();
		}
	?>

Pour ma part le résultat est le même derrière le / il ne me met que .html
 
Discussions similaires
Haut