2009-07-15 5 views
0

Dans mon fichier .htaccess J'ai un ensemble de règles comme suit:Comment puis-je ajouter HTTP_REFERER à la chaîne de requête en utilisant htaccess?

RewriteRule ^dir/page1$ /bleh/docs/?id=12 [L,QSA] 
RewriteRule ^dir/page2$ /bleh/docs/?id=13 [L,QSA] 
RewriteRule ^dir/page3$ /bleh/docs/?id=14 [L,QSA] 

Parfois, l'un de ces règles peuvent être accessibles via une redirection d'un autre site (referer). Je voudrais être en mesure d'ajouter à la referrer la chaîne de requête comme ceci:

RewriteRule ^dir/page2$ /bleh/docs/?id=13&ref=%{HTTP_REFERER} [L,QSA] 

Toutefois, cela ne semble pas fonctionner.

Qu'est-ce que je fais mal?

Répondre

2

Si vous l'épelez HTTP_REFERER (ce n'est pas clair en raison de modifications), vous le faites correctement. Si ça ne marche pas à ce moment-là, c'est parce que le referer n'est pas fourni. (Il y a plusieurs raisons à cela, la fournir est laissée à la discrétion du navigateur.)

1

La variable pour le référant utilise l'orthographe commune: HTTP_REFERER. Voir this cheat-sheet pour plus de noms de variables. Pour autant que je sache, une URL réécrite ne supprimera pas l'en-tête original Referer, vous devriez donc toujours pouvoir le récupérer à partir de votre code sans le passer comme paramètre de chaîne de requête (à condition qu'il vous donne accès à les variables HTTP.)

Questions connexes