IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[URL Rewriting] Masquer les paramètres GET


Sujet :

Apache

  1. #1
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut [URL Rewriting] Masquer les paramètres GET
    [RewriteRule] Masquer les paramètres GET

    Bonjour Bonjour !

    Je souhaite masquer les paramètres GET des requêtes envoyés sur mon site.

    Mes utilisateur arrivent sur le site après avoir cliquer sur des bannières flash. Ses bannières ajoutent dans l’URL un tag qui permet d’identifier la provenance de l’utilisateur.

    Cliquer sur la bannière reviend à cliquer sur un lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href= « www.monsite.com?tag=source » >lien</a>
    Seulement on ne souhaite pas que l’utilisateur puisse voir se tag.

    Je souhaite donc mettre ne place des règles de réécriture d’URL pour masquer ce tag.

    Pour le moment j’en suis là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^monsite.fr($1)$ monsite.fr [C]
    RewriteRule monsite.fr$ /index.php($1) [L,R=301]
    Mon problème c’est que je veux faire 2 choses en même temps : rediriger l’utilisateur vers l’url de mon site ET exécuter l’index avec les paramètres.


    J’espère que c’est possible !
    Mais j’aurais besoins d’un coups de pouce ^^


    Merci de votre aide
    Orthographe => Message Privé constructif svp

  2. #2
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # On test la requête et on regarde si c'est bien la racine du site 
    # qui et demandé et qu'il y a bien des arguments GET
    RewriteCond %{QUERY_STRING} /?(.*) 
    # On redirige l'utilisateur vers la racine (sans paramètres dans l'URL) 
    # Mais on exécute l'index avec les paramètres. 
    RewriteRule / /index.php?%1 [L,R=301]
    J'ai de plus en plus l'impression que ce qu'on me demande et impossible (en plus d'être futile.... )
    Orthographe => Message Privé constructif svp

  3. #3
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Je viens de me rendre compte que je ne l'ai pas précisé :

    Dans ma page html j'utilise le tracker de Google. Et je ne doit pas perdre le HTTP_REFERE dans la manœuvre. (pour tracker la provenance des utilisateurs)

    et pour finir je travail sur Apache2.0

    Merci
    Orthographe => Message Privé constructif svp

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est pas très clair : si le tag ne figure pas dans l'URL, soit en tant que paramètre (...?tag=source), soit en tant que chemin (/.../tag/source, par exemple), comment veux-tu qu'Apache récupère cette info ? Dans tous les cas ça doit apparaître dans l'URL, ou alors y a un truc qui m'échappe.

    C'est pareil, j'ai pas compris ton histoire de redirection.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    j'ai trouvé quelque chose de plus "plaisant"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_URI} /index.php 		# Si index.php
    RewriteCond %{QUERY_STRING} ^(.+)$ 			# AND QUERY_STRING not null
    RewriteRule ^/$ index.php?%{QUERY_STRING} [L]	# THEN rewrite to "/" and execute index.php?%{QUERY_STRING}

    Merci d'avoir répondu _Mac_ ^^

    Et c'est vrai que c'est pas très claire tout ça.
    Je vais donc me reformuler.


    1 ) Pour accédez au site sur le quel je travail il faut obligatoirement cliquer sur une des bannières promotionnelles qui sont implémenté sur les sites de nos partenaires.
    2 ) Aujourd'hui ces bannières appellent l'URL suivante : foo.masociete.com?tag=bar&source=partenaire
    3 ) Seulement la direction ne souhaite pas que les visiteurs du site puisse voire cette URL. Ils veulent que les visiteurs vois l'URL suivante dans leur navigateur : www.nomoperation.com
    4 ) On souhaite avoir des stats précisent sur la provenance des utilisateur grâce à google analytics. Or google analytics se base sur le HTTP_REFERER pour savoir d'où viennent les gens. Je ne doit donc pas perdre cette donnée.

    a ) J'ai gérer le changement de domaine grâce au DNS et aux redirection Web via claranet (qui nous fournit les nom de domaine.)
    b ) Mes visiteurs arrivent donc sur le site avec l'URL suivante dans leur navigateur : www.nomoperation.com?tag=bar&source=partenaire

    Je suis développeur PHP, mon idée de base a donc été de récupérer la requête, tester la présence des paramètres, d'enregistrer les infos qui m'intéressent puis de diriger les visiteurs vers l'index du site sans les paramètres.
    Si il n'y a pas de paramètres alors j'affiche la page. mais ce n'est que a ce moment là que google analytics peut faire son office mais j'ai perdu le HTTP_REFERER.

    D'où l'idée de passer par une RewriteRule.


    j'espère que je suis plus claire.
    Orthographe => Message Privé constructif svp

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour résumer ce qu'on a :

    Est-ce bien cela (surtout les 3ème et 4ème points, en fait) ? Quand tu fais ta redirection (point 4), tu perds le Referrer ou non ? Le souci se situe ici : il y a de forts risques que tu perdes le Referrer en faisant les redirections car tu passes par le navigateur qui peut donc changer de nouveau le Referrer.

    Comment marche Google Analytics ? Il faut mettre un code spécial dans le code HTML des pages du site ou c'est autre chose ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Pour la redirection du nom de domaine elle est effectué au niveau de DNS.

    dans claranet : interface d'administration / Redirection Web :

    Redirection Web
    Domaine masociete.com

    Redirections actives
    - foo.masociete.com => http://www.nomoperation.com .. ( Recursive )

    normalement cette opération ne perd pas la referer


    on arrive ensuite sur ma page qui contient du code php puis du code html/javascript:

    l'astuce c'est l'utilisation du header('HTTP_REFERER:'.$_SERVER['HTTP_REFERER']); qui semble marcher

    php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?php 
    session_start();
    define('GAME_ADDR', 'www.nomoperation.com');
     
    function isValidComeFrom(){
    	$ret = false;
    	if(isset($_GET['fidelitag'])){
    		$ret = true;
    	}
    	return $ret;
    }
     
    function getDomain($url){
    	$url = split('//',$url,2);
    	$url = $url[sizeof($url)-1];
    	$url = split('/',$url,2);
    	$url = $url[0];
    	$url = split('\?',$url,2);
    	$url = $url[0];
    	return $url;
    }
     
    function isValidSession(){
    	$ret = false;
    	if(isset($_SESSION['public'])){
    		if(isset($_SESSION['public']['valide'])){
    			if($_SESSION['public']['valide'] === true){
    				$ret = true;
    			}
    		}
    	}
    	return $ret;
    }
     
    function setValideSession(){
    	$_SESSION['public']['valide'] = true;
    }
     
    function redirect($goto){
    	header('HTTP_REFERER:'.$_SERVER['HTTP_REFERER']); 
    	header('location: http://'.$goto);
    	echo '<script type="text/javascript">';
    	echo 'document.location.href="http://'.$goto.'";';
    	echo '</script>';
    	echo '<a href=http://'.$goto.'>'.$goto.'</a>';
    	exit();
    }
     
    function gotoTheGame(){
    	$goto = GAME_ADDR;
    	$goto .='?';
    	foreach($_GET as $p=>$v){
    		$goto .= "$p=$v&";
    	}
    	redirect($goto);
    }
     
    function lancementApplication(){
    	if(!isset($_SERVER['HTTP_REFERER'])){
    		$_SERVER['HTTP_REFERER']='';
    	}
    	//echo "<br>".'HTTP_REFERER ='.$_SERVER['HTTP_REFERER'];
    	if($_SERVER['SERVER_NAME'] !== GAME_ADDR){ 
    		//echo "<br>".'#Si on est pas à la bonne URL alors on y vas.';
    		gotoTheGame();
    	}
    	if(!isValidSession()){
    		//echo "<br>".'# Nouveau venu';
    		if(isValidComeFrom()){
    			//echo "<br>".'# Le nouvel arrivant est valide';
    			setValideSession(); // Création d'une session
    		}else{
    			//echo "<br>".'# Le nouveau venu est un indésirable';
    			redirect('*****');
    		}
    	}
    	if(sizeof($_GET) > 0){
    		//echo "<br>".'# On nétoye l'URL';
    		redirect(GAME_ADDR); // Effacement des paramètres
    	}
    }
     
    /* ------------------ Script:START ------------------ */
    lancementApplication();
    /* ------------------ Script:STOP ------------------ */
     
    ?>
    html/javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    	<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>
    	<script type="text/javascript" src="swfobject.js"></script>	
    </head>
     
    <body>
    	<!-- <?php echo "<br>".'HTTP_REFERER ='.$_SERVER['HTTP_REFERER']; ?> -->
    	<div id="flashcontent"><strong>You need to upgrade your Flash Player</strong></div>
     
    	<script type="text/javascript">
    		// <![CDATA[      
    		// Création de l'objet Flash
    		var so = new SWFObject("home.swf", "***", "800", "600", "0", "#000000");
    		so.addParam("allowScriptAccess","always");
    		so.write("flashcontent");
    		// ]]>	
    	</script>
     
    	<script type="text/javascript">
    		// <![CDATA[    
    		// Tracker Google Analytics
    		var pageTracker = _gat._getTracker("****");
    		pageTracker._initData();
    		pageTracker._trackPageview(); //On enregistre  cette entré.
    		// ]]>	
    	</script>

    Sur mon environnement de prés prod cette architecture semble très bien marché. J'ai mit en ligne ces modifications hier soir. Mais j'ai été déçu ce matin en constatant que j'ai toujours 75% de visites à provenance inconnue. (Normalement j'en ai 0.) Mais je n'arrive pas à savoir si ce sont de vrais visite à provenance inconnue ou si c'est moi qui les perd...
    Orthographe => Message Privé constructif svp

  8. #8
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Est-ce bien cela (surtout les 3ème et 4ème points, en fait) ?
    Oui


    Citation Envoyé par _Mac_ Voir le message
    Comment marche Google Analytics ? Il faut mettre un code spécial dans le code HTML des pages du site ou c'est autre chose ?
    Pour mettre en place Google analytics il faut mettre un code spécial dans le code HTML des pages du site.

    ce code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">
    	// <![CDATA[    
    	// Tracker Google Analytics
    	var pageTracker = _gat._getTracker("****");
    	pageTracker._initData();
    	pageTracker._trackPageview(); //On enregistre  cette entrée.
    	// ]]>	
    </script>
    Orthographe => Message Privé constructif svp

  9. #9
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut the end ?
    Bien. Il apparait que finalement je n'utilise par d' URL Rewriting est que par conséquent cette discutions n'est pas à ça place.

    De plus, mes problèmes sont en grande partie réglés. (En fait, j'ai l'impression que tout est aléatoire.... Des fois ça marche. Des fois ça marche pas...)

    Je propose de clore ce sujet pour continuer mes divagations sur cet autre sujet :
    http://www.developpez.net/forums/sho...91#post3044391

    Merci de ton aide _Mac_ :-)
    Orthographe => Message Privé constructif svp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [URL rewriting] Gérer les paramètres après html ?
    Par alexandre2012 dans le forum Apache
    Réponses: 2
    Dernier message: 03/12/2012, 16h46
  2. Masquer les paramètres d'une url
    Par momoh dans le forum VB.NET
    Réponses: 4
    Dernier message: 21/03/2010, 16h15
  3. Réponses: 6
    Dernier message: 18/12/2009, 14h26
  4. Est il possible de masquer les paramètres GET ou POST?
    Par samsso2006 dans le forum Langage
    Réponses: 15
    Dernier message: 18/04/2007, 10h44
  5. Récupérer les paramètres "GET" sous forme de String
    Par vanitom dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2007, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo