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 :

[htaccess] Réécriture URL


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    [htaccess] Réécriture URL
    Bonjour

    Sur un site, beaucoup des adresses sont du type /index.php?t=ste_info&id=XX&....
    J'aimerais faire une règle pour que l'utilisateur voit plutôt /ste_info/id=XX&.... ou quelque chose d'approchant

    J'avoue que la documentation sur le .htaccess est pour l'instant assez obscure et je vais besoin assez urgemment de cette redirection

    Merci pour votre aide

  2. #2

  3. #3
    Invité
    Invité(e)
    Certains forum ce sont spécialisés la dessus, voir à chercher forum Regex, pour avoir de l'aide d'experts qui mangent des Regex régulièrement.

    Tu as aussi des outils pour tester les regex : https://regexr.com

    Des propositions de regex : http://www.expreg.com/lire-Chaines-source

  4. #4
    Nouveau membre du Club
    Tout d'abord, merci pour les liens

    Cependant, j'avoue que je bloque tout de même

    J'aimerais que l'URL suivante : http://127.0.0.1:8080/res_soc/ste_info/nouveau/start=0
    Soit réécrite en http://127.0.0.1:8080/res_soc/index.php?t=ste_info&m=nv&start=0

    De même http://127.0.0.1:8080/res_soc/ste_info/modification/124/start=0
    Réécrit en http://127.0.0.1:8080/res_soc/index.php?t=ste_info$id=124&m=mod&start=0

    Mon .htaccess est donc du type
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DirectoryIndex index.php
    RewriteEngine on
    RewriteRule ([a-zA-Z0-9]+)/nouveau/(.*) index.php?t=$1&m=nv [QSA]
    RewriteRule ([a-zA-Z0-9]+)/modification/([0-9]+)/(.*) index.php?a=$1&id=$2&m=mod&$3 [QSA]
    ErrorDocument 404 http://www.XXXX.com/404.php


    Quand je demande à voir la page http://127.0.0.1:8080/res_soc/ste_info/nouveau/start=0, je tombe sur une page vide.
    A l'évidence, il ne comprend pas la valeur de [t] car si je met le code suivant, cela fonctionne.
    Un problème avec $1 à priori
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    RewriteRule ([a-zA-Z0-9]+)/nouveau/(.*) index.php?t=ste_info&m=nv [QSA]


    Auriez vous une idée pour corriger ce problème ?

    Cdlt

  5. #5
    Modérateur

    Dans ton url#1, http://127.0.0.1:8080/res_soc/ste_info/nouveau/start=0, il te faut récupérer les groupes suivants :

    Group $1 http://127.0.0.1:8080/res_soc
    Group $2 ste_info
    Group $3 start=0
    tu peux récupérer cela via
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    RewriteRule (.*)/(.*)/nouveau/(.*) $1/index.php?t=$2&m=nv&$3 [QSA]



    Dans ton url#2, http://127.0.0.1:8080/res_soc/ste_info/modification/124/start=0, il te faut récupérer les groupes suivants :

    Group $1 http://127.0.0.1:8080/res_soc
    Group $2 ste_info
    Group $3 124
    Group $4 start=0
    tu peux récupérer cela via
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    RewriteRule (.*)/(.*)/modification/([0-9]+)/(.*) $1/index.php?t=$2&id=$3&m=mod&$4 [QSA]

    ou quelque chose qui ne doit pas en être loin.