8796 sujets

Développement web côté serveur, CMS

Bonjour !

J'ai mis en place une vérification RewriteCond qui vérifie le HTTP_REFERER sur tout un dossier. En clair, lorsque la requête vient d'ailleurs que index.html, j'interdis l'accès au dossier. Cela fonctionne à merveille sur Firefox et Chrome, mais pas sous IE8. Comment faire ?


RewriteCond %{HTTP_REFERER} !^http://www.astin.fr/index.(php|html)$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.astin.fr/$ [NC]
RewriteRule ^music/(.*)$ - [F]


Merci d'avance !
La variable HTTP_REFERER générée par le serveur et est indépendante du navigateur. En revanche, elle exploite un paramètre renvoyé par le navigateur dans la requête HTTP. Seulement IE (toujours le même...) ne renseigne pas ce paramètre (si certains paramètres de sécurité sont activés). Ta variable est donc null.

Le mieux est de passer par une variable session (PHP) pour stocker l'url de la page précédente, mais cela ne fonctionne que pour une navigation interne à ton site.
Pourtant quand j'affiche le HTTP_REFERER dans l'URL, sous IE il m'affiche la même chose que sous Firefox... C'est pour ça que je ne comprends pas.

Bref... Y'a t-il possibilité de tester le navigateur dans le .htaccess ? Si c'est le cas j'utiliserais le HTTP_REFERER que pour les navigateurs différents de IE...