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 :

Redirection d'URL en changeant des paramètres GET


Sujet :

Apache

  1. #1
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut Redirection d'URL en changeant des paramètres GET
    Bonjour, suite à la restructuration complète d'un site web, je souhaiterais, pour conserver le référencement faire des redirections depuis les anciennes pages vers les nouvelles.

    Le problème, c'est que les anciennes urls étaient du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /index.php?action=test&id=123
    /index.php?action=test&id=254
    et les nouvelles comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /index.php?page=jade&id=156
    /index.php?page=jade&id=532
    Je dispose de la table de correspondance entre les anciens id et les nouveaux.

    Comment faire pour créer une redirection depuis les anciennes URL vers les nouvelles avec Apache ?

    PS : je suis hébergé chez Free, je ne sais pas s'il y a des restrictions particulières

    Merci d'avance pour votre aide.
    Maitrisez toutes les subtilités de Windows 8 en lisant la FAQ Windows 8. N'hésitez pas à proposer vos Q/R.
    _ _ _
    Découvrez toutes les facettes de Windows 7 et maitrisez toutes ses fonctionnalités grâce au livre Windows 7 Avancé

  2. #2
    Membre éclairé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Mars 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 377
    Points : 722
    Points
    722
    Par défaut
    Hello,

    Je ne sais pas le faire via Apache alors voici un petit script PHP rapidement codé qui devrait faire l'affaire. Il suffit de l'inclure au tout début de chaque page de ton nouveau site.

    Attention, script non testé, il faut compléter la connexion à la bdd, veiller à la sécurité etc.

    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
     
    <?php
    if isset($_GET['action'])
    {
    //ancienne URL détectée, il faut rediriger.
     
    // Recuperation de l'URL appelée
    $_HOST = $_SERVER['HTTP_HOST'];
    $_URI = $_SERVER['REQUEST_URI'];
    $_URL = $_HOST.$_URI;
    $_URL=urlencode($_URL);
     
          //se connecter à la bdd avant etc
     
          // On récupère la nouvelle URL dans la table de correspondance des URLs
          $sql = "SELECT urlNew FROM tableCorrespondance WHERE urlOld='$_URL'";
          $req = mysql_query($sql) or die('<!-- Erreur SQL -->');
          $num_rows = mysql_num_rows($req);
            if($num_rows==1) {
            //S'il y a bien une nouvelle Page, on redirge en 301
                $data = mysql_fetch_assoc($req);
                $redirection = $data['urlNew'];
                    header("HTTP/1.1 301 Moved Permanently");
                    header("Location: $redirection");
     
            }else{
            // Sinon c'est une erreur 404
                header('HTTP/1.0 404 Not Found');
                header("Location: /page-404.html"); 
               exit;
            }
    }
    Bon test
    La FAQ référencement c'est les 100 réponses aux 100 questions les plus fréquentes en référencement naturel. Ni plus ni moins.

  3. #3
    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
    Citation Envoyé par shawn12 Voir le message
    Je dispose de la table de correspondance entre les anciens id et les nouveaux.
    Quelle taille fait cette table (nombre de lignes) ? Si elle est courte, on peut imaginer de créer un .htaccess qui fait la redirection, sinon faut effectivement passer par un script qui va faire une requête SQL sur la table et fait la 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

  4. #4
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Entre 150 et 200. Je suis en train d'essayer de le coder en PHP. Ca marche pas trop mal. Mais est-ce que c'est performant ?

    Il y a un équivalent en Redirect ?
    Maitrisez toutes les subtilités de Windows 8 en lisant la FAQ Windows 8. N'hésitez pas à proposer vos Q/R.
    _ _ _
    Découvrez toutes les facettes de Windows 7 et maitrisez toutes ses fonctionnalités grâce au livre Windows 7 Avancé

  5. #5
    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
    Non, pas d'équivalent en Redirect car la redirection se fait sur la base de paramètres d'URL. C'est plutôt mod_rewrite qu'il faut utiliser mais comme justement la redirection se fait sur la base de la query string, il faut construire au minimum 150 à 200 couples de lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{QUERY_STRING} ...
    RewriteRule ...
    bref, un .htaccess monstrueux. A mon avis, c'est plus pertinent de partir sur du PHP, niveau maintenance c'est incomparable. Pour les perfs, je ne suis pas sûr qu'on voit une différence.

    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

  6. #6
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Ok. Je vais rester sur la solution PHP pour l'instant (merci à aurelienbardon pour ta solution).

    En plus, chez Free, le mod_rewrite n'est pas activé il me semble.

    Et de toute façon, une fois que les moteurs de recherche auront ré-indexé avec les nouvelles URLs, je pourrais retiré le code qui gère ces redirections...

    Merci en tout cas pour vos réponses.
    Maitrisez toutes les subtilités de Windows 8 en lisant la FAQ Windows 8. N'hésitez pas à proposer vos Q/R.
    _ _ _
    Découvrez toutes les facettes de Windows 7 et maitrisez toutes ses fonctionnalités grâce au livre Windows 7 Avancé

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/01/2015, 11h06
  2. [ZF 2.*] Rajouter des paramètre GET dans une redirection
    Par narmataru dans le forum Zend Framework
    Réponses: 5
    Dernier message: 04/02/2013, 17h56
  3. [SP-2007] PageViewerWebPart avec une URL contenant des paramètres GET.
    Par -BTA- dans le forum SharePoint
    Réponses: 0
    Dernier message: 17/07/2009, 08h57
  4. Réponses: 4
    Dernier message: 06/05/2009, 15h35
  5. Réponses: 13
    Dernier message: 01/10/2006, 15h52

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