Tu as raison jeroen, je n'ai pas de 301 avec ces regles, j'ai seulement 200 OK.
mais seulement pour les urls du type /produit-ref-123.html,
Pour les autres "urls d'origine" du style /produit.php?id=123, j'obtiens :
HTTP/1.1 302 Found
Status: 301 Moved Permanently
Mon problème est de savoir si ces 2 redirections successives (302 puis 301) sont nuisibles. On m'a que que oui ...
Dans cet esprit, mon idée est de supprimer la redirection 302 qui proviendrait du .htaccess. La 302 proviendrait du .htaccess car si les règles ne précisent pas 301, par défaut c'est 302. Donc je dois rajouter dans ces règles R=301 .... Mais c'est la syntaxe qui coince...
Les règles actuelles du htaccess sont les suivantes :
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html$ $1$2&$3=$4$5\.html [N]
RewriteRule ^(.*)-([^-]+)-([^-]*)(.*)\.html$ $1.php?$2=$3$4 [L]
RewriteRule ^(.*).html$ $1.php [L]
La redirection 301 vient "probablement" du fichier produit.php lui-même qui commence comme ca :
if ( !empty( $_GET['id'] ) )
{ header("Status: 301 Moved Permanently");
$url = $_SERVER["REQUEST_URI"] ;
$url = str_replace("id", "ref", $url ) ; $url = url_rewrite($url) ;
header("Location: $url"); die;
}
elseif( strpos($_SERVER["REQUEST_URI"], "php" ) !== false)
{
header("Status: 301 Moved Permanently");
$url = $_SERVER["REQUEST_URI"] ;
$url = url_rewrite($url) ;
header("Location: $url"); die;
}
Comment modifier les 3 règles pour n'avoir qu'une redirection 301 au lieu d'une 302 (liée à .htaccess) d'abord puis 301 ensuite (liée au code php) ?