Incrémenter une variable ($1 = $1+1)

Nouveau WRInaute
Bonjour,

J'ai fais une recherche mais j'ai rien trouvé à ce sujet.
J'ai ceci:
RewriteRule ^(.*)-c-([0-9]+).html$ /category.php?id_category=$2 [L]

en allant sur http://monsite.com/string-c-2.html ça renvoit bien sur category.php?id_category=2
mais je voudrai qu'il renvoie sur category.php?id_category=3

Comme il est impossible d'effectuer des opérations dans les htaccess, je me demandais si quelqu'un saurait comment faire?

merci pour votre aide.
 
WRInaute accro
Quelle idée de vouloir faire ça ? Tu as tes ID tous décalés ? Autant modifier le category_id dans la BDD alors.
Sinon modifier category.php et y mettre $_GET['category_id'] = $_GET['category_id'] + 1;
 
Nouveau WRInaute
oui toutes mes id sont décalées de 1 et ça je peux pas le modifier dans la bdd... c'est impossible vu que l'id 1 est réservée pour le cms que j'utilise (prestashop), j'ai du décaler de 1 toutes les id des catégories.

J'ai refait le site, les liens dans google sont sauvées avec l'id et je veux que lorsque un user clique sur ce lien, il soit redirigé vers la même page du nouveau site (avec l'id + 1).

Ce n'est donc pas possible via le htaccess?
 
WRInaute accro
Quelques options:
- tu ajoutes un script PHP qui va faire une redirection vers l'URL "finale" en tenant compte de l'offset (probablement la meilleure solution, puisque les liens affichés par Prestashop seront les nouveaux). Tu envoies ta RewriteRule sur ce script.
- tu utilises un RewriteMap, soit avec un fichier qui contient le mapping (probablement le plus simple si tu as un nombre de catégories limité), soit qui fait appel à un script externe. Tout est expliqué là:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#mapfunc

Jacques.
 
Nouveau WRInaute
ok merci

Je vais faire une redirection vers un script php du genre :
RewriteRule ^(.*)-c-([0-9]+).html$ /redirection.php
qui les qui redirigera vers la bonne page.
 
Nouveau WRInaute
Ai je bien fait?

Bonjour,

J'ai procédé comme il suit:

RewriteRule ^(.*)-c-([0-9]+).html$ /category_redirection.php?id=$2 [R=301,L]

code de category_redirection.php
Code:
<?php 
	if(is_numeric($_GET['id']))
	{
	$id_redirected = $_GET['id'] + 1;
        header("Status: 301 Moved Permanently"); 
        header("Location: /category.php?id_category=$id_redirected"); 
        exit; 
        } 
?>

Voila comme je suis pas très à l'aise avec les 301 et que je veux pas faire de bêtise je le soumet à votre examen :mrgreen:
Notez que j'ai fais une redirection 301 vers la page de redirection et une autre vers le lien final, je sais pas si google comprendra bien. Au final il faut que la redirection permanente soit indexée sur /category.php?id_category=[id]
 
Discussions similaires
Haut