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 :

création de regex


Sujet :

Apache

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut création de regex
    Bonjour,

    J'ai pour objectif de modifier le nom et l'emplacement de trois dossiers de mon site web. Cela implique de changer les liens hypertextes pointant sur ces dossiers. Les articles à modifier sont dans une base de données mysql.

    Ainsi, il faudrait faire en sorte de modifier les urls suivantes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /balades_vtt/voir_balades_vtt.php
    /balades_pieds/voir_balades_pieds.php
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /php/balade/voir_balade.php

    Les urls contiennent deux paramètres qu'il ne faut pas modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?numdep=68&voir_balade=161

    Toujours dans le même principe, il faudrait modifier les URL's contenants :

    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /php/test/voir_test.php
    Sachant que cette url prend un paramètre :

    Est-ce qu'un update des différentes tables avec un preg_replace() est une bonne solution ?
    Si oui, pouvez-vous me proposer un exemple ?

    Par avance merci.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu peux t'en sortir en mettant des redirections 301, c'est une pratique courante pour conserver un référencement quand on "bouge" des pages:
    .htaccess (ou conf Apache)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Redirect permanent /oldpage.html http://www.example.com/newpage.html
    Les paramètres de l'URL sont préservés.

    Voir: http://en.wikipedia.org/wiki/URL_redirection

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Bonjour et merci pour la réponse,

    Je n'ai donc pas besoin de faire cela en dure ! Pour autant, est-ce vraiment la bonne solution ?

    Par avance merci.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    C'est je pense la meilleure solution car, comme je l'ai dit, elle préserve le référencement des pages.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    C'est je pense la meilleure solution car, comme je l'ai dit, elle préserve le référencement des pages.
    Un grand merci pour cette astuce.

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu peux également regarder sur le lien wikipedia pour voir les autres techniques de redirections

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Redirect permanent /balades_vtt/voir_balades_vtt.php http://www.partir-en-vtt.com/php/balades/voir_balade.php?type_balade=0
    Le problème est que ça ne laisse pas passer les paramètres

    Il faudrait faire passer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.partir-en-vtt.com/balades_vtt/voir_balades_vtt.php?numdep=88&voir_balade=106

    à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.partir-en-vtt.com/balades/voir_balade.php?numdep=88&voir_balade=106&type_balade=0
    Il faut donc rajouter un paramètre et garder les anciens, est-ce possible ?

  8. #8
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Dans ce cas on va être obligé de faire ça avec des réécritures d'url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !favicon.ico$
      RewriteRule ^balades_vtt/voir_balades_vtt\.php$ balades/voir_balade.php?type_balade=0 [L]
    </IfModule>
    Et tu rajoutes toutes les RewriteRule qu'il faut

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Dans ce cas on va être obligé de faire ça avec des réécritures d'url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !favicon.ico$
      RewriteRule ^balades_vtt/voir_balades_vtt\.php$ balades/voir_balade.php?type_balade=0 [L]
    </IfModule>
    Et tu rajoutes toutes les RewriteRule qu'il faut

    Et ça s'ajoute dans le fichier.htaccess ?

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Oui.

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Oui.

    un grand merci, cela semble fonctionner à merveille

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par heretik25 Voir le message
    un grand merci, cela semble fonctionner à merveille
    Encore une fois, j'ai parlé trop vite,


    Lorsque l'on vient de google, ce lien ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.partir-en-vtt.com/balades_pieds/voir_balades_pieds.php?numdep=25&voir_balade=348

    alors qu'il y a bien un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RewriteRule ^balades_pieds/voir_balades_pieds\.php$  /php/balades/voir_balade.php?type_balade=1 [L]

  13. #13
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Alors j'ai jamais essayé mais bon, tentons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&$1 [R=301,L]

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    En faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{QUERY_STRING} ^(.*)$
      RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&$1 [R=301,L]
    Cela change l'url mais n'ajoute pas les paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.partir-en-vtt.com/php/balades/voir_balade.php?type_balade=1
    et puis après, j'ai une redirection vers l'accueil car l'id n'existe pas (sécurité)

    il manque donc par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?numdep=25&voir_balade=348

  15. #15
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je vais déplacer la conversation vers le forum Apache parce que ça commence à dépasser mes compétences.

    Je suis sûr qu'une solution plus simple que celle évoquée ci-dessus pourrait fonctionner correctement.

    Bref, essayons ça dans l'immédiat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{QUERY_STRING} ^numdep=([0-9]*)&voir_balade=([0-9]*)$
      RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&numdep=$1&voir_balade=$2 [R=301,L]
    </IfModule>

  16. #16
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Voilà le résultat à partir d'une recherche google :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.partir-en-vtt.com/php/balades/voir_balade.php?type_balade=1&numdep=&voir_balade=
    Si c'est à partir du site, ça fonctionne

  17. #17
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Arf je me suis trompé de syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{QUERY_STRING} ^numdep=([0-9]*)&voir_balade=([0-9]*)$
      RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&numdep=%1&voir_balade=%2 [R=301,L]
    </IfModule>
    (déformation professionnelle dûe à l'usage répété de PHP).

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Arf je me suis trompé de syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{QUERY_STRING} ^numdep=([0-9]*)&voir_balade=([0-9]*)$
      RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&numdep=%1&voir_balade=%2 [R=301,L]
    </IfModule>
    (déformation professionnelle dûe à l'usage répété de PHP).
    Ah je crois qu'on tient le bon bout ! Cela fonctionne à partir de google

  19. #19
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Bonjour,

    Je n'avais pas attention hier mais il y a encore un problème sur une redirection à partir de google


    Celle-la ne fonnctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteCond %{QUERY_STRING} ^voir_test=([0-9]*)$
    RewriteRule ^test/voir_test\.php$ /php/test/voir_test.php?voir_test=%1 [R=301,L]
    :

    alors que celle-là fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteCond %{QUERY_STRING} ^voir_periples=([0-9]*)$
    RewriteRule ^periples_vtt/voir_periples\.php$ /php/periples/voir_periple.php?voir_periple=%1 [R=301,L]
    je ne vois pas pourquoi la redirection ne se fait pas pour les tests


    EDIT : Si je met un dossier "test" vide a la racine du site, cela fonctionne. Vous pouvez m'expliquer pourquoi ?

  20. #20
    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
    Ca veut dire quoi "ne fonctionne pas" ? Tu testes avec quelle URL et quel est le comportement observé ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [RegExp] Aide pour la création d'un regex
    Par beegees dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/08/2011, 14h11
  2. Création d'une Regex (TextBox Float)
    Par snakzbenjy dans le forum Silverlight
    Réponses: 2
    Dernier message: 13/04/2011, 20h07
  3. Pb de création de regex
    Par boboss123 dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 28/05/2010, 15h34
  4. [RegEx] Probleme de création d'un regex
    Par mathis49 dans le forum Langage
    Réponses: 6
    Dernier message: 15/06/2007, 12h08
  5. Regex : création de lien html s'il n'existe pas
    Par GregPeck dans le forum Langage
    Réponses: 3
    Dernier message: 22/11/2005, 00h21

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