5568 sujets

Sémantique web et HTML

Bonjour à tous,

Je suis sur un gros projet très important pour moi, et j'ai besoin de votre avis en matière d'url rewriting.

Je sais qu'il est possible d'ajouter une variable à la fin des urls qui viennent d'un même referer (= d'un même site).

Ex: le site http://www.sitedorigine.fr/ fait un lien vers http://www.monsite.com/page1.html

Je cherche à ce que la page qui s'affiche ait l'url suivante: http://www.monsite.com/page1.html?variable=valeur

Après mes recherches sur le net, je suis arrivé à la formulation suivante:

RewriteCond %{HTTP_REFERER} ^http://www.sitedorigine.fr/ [NC]
RewriteRule ^.*$ ?variable=valeur [L]

Le problème, c'est que ça fonctionne à moitié: soit la variable s'affiche, mais sur la page d'accueil; soit le navigateur indique une erreur 500.

Auriez-vous des pistes pour trouver la bonne méthode afin d'arriver à ce résultat ?

Note : Cette variable n'a besoin d'être affichée que sur l'url de la page de destination seulement. Une fois affichée sur cette page de destination, cette variable n'a plus à s'afficher sur les autres pages visitées. L'essentiel est que la première page visitée affiche cette url.

Merci d'avance,
Stef
Essaie plutôt :


RewriteCond %{HTTP_REFERER} ^http://www.sitedorigine.fr/ [NC]
RewriteRule (.*) $1/?variable=valeur [L]
Salut,

à noter qu'il est déconseillé d'utiliser le REFERER car il peut très bien ne pas être renseigné. Smiley murf
Heyoan a écrit :
à noter qu'il est déconseillé d'utiliser le REFERER car il peut très bien ne pas être renseigné. Smiley murf

Le faut que le REFERER ne soit pas renseigné dans certains cas ne veut pas dire qu'il ne faut pas l'utiliser. Ça dépend de ce qu'on veut faire avec.
Arf ! Smiley lol

C'est vrai qu'il y a une nuance. Donc pour dire ça autrement je vais citer php.net :
a écrit :
HTTP_REFERER
L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateurs permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
Bonjour,
et merci de vos réponses.

Alpher: avec cette orthographe

RewriteRule (.*) $1?variable=valeur [L]

le site d'arrivée (monsite.com) devient inaccessible, avec l'erreur suivante :

"Internal Server Error"

Vous avez une idée d'où se situe le problème?

Merci
Stephane.
Je vais être plus précis sur ce que je souhaite faire:

J'ai 2 sites: http://www.sitedorigine.fr/ et http://www.monsite.com/.

Je souhaite tracker les visites de http://www.monsite.com/ envoyées par http://www.sitedorigine.fr/. Pour se faire, j'ai recours à un outil spécialisé pour l'affiliation, qui permet de tracker ces visites automatiquement, grâce à une variable contenue dans l'url.

Ainsi, lorsque sitedorigine.fr/ fait un lien vers une page de monsite.com/ (par exemple http://www.monsite.com/page1.html), je rajoute la variable dans cette url, et la visite est trackée: http://www.monsite.com/page1.html?variable=valeur

Cependant, le lien est alors identifié par Google comme étant un lien affilié (à cause de la variable contenue dans l'url du site d'origine). Voulant éviter cela, je souhaite que le site d'origine fasse un lien vers la page en question, sans variable (http://www.monsite.com/page1.html).

Afin de continuer à tracker les visites, je voudrais que la variable apparaisse dans la barre de navigation, mais une fois que le visiteur est sur mon site. Pour cela, je voudrais faire une redirection, qui dise : "toutes les pages de monsite.com/ qui proviennent de sitedorigine.fr/ affichent en plus la variable "?variable=valeur" dans la barre de navigation.

Pour se faire, j'ai recours au http_referer. Le problème, c'est que j'ai du mal à le mettre en place.

D'où ma question: qu'est-ce qui serait le plus approprié pour faire cela ?
Le code proposé par Alpher me semble pourtant correct... A tout hasard tu pourrais essayer
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://www.sitedorigine.fr/.*$ [NC]
RewriteRule ^(.*)$ $1/?variable=valeur [L]