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


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut URL rewriting
    Bonjour, j'ai un fichier .htacces qui marche très bien pour toutes les pages. et je veux changer encore url d'une page
    http://localhost/site/immeuble/nom_client/23 je veux masquer immeuble (immeuble c'est un fichier immeuble.php) et Id, pour qu'il soit: http://localhost/site/nom_client

    Voici le contenu de fichier .htacces, Qu'est-ce que je dois ajouter ou modifie dans ce fichier. Merci de m'aider

    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
    <IfModule mod_rewrite.c>
    RewriteEngine On
     
    RewriteBase /site/
    RewriteRule ^index\.php$ - [L]
     
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
     
    Options +SymLinksIfOwnerMatch
     
     
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/$ admin/index.php?p=$1 [S=1]
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)$ admin/index.php?p=$1 [S=1]
     
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/action/$ admin/index.php?p=$1&type=action [S=1]
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/action$ admin/index.php?p=$1&type=action [S=1]
     
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/([0-9]+)/$ admin/index.php?p=$1&TableUniqueID=$2 [S=1]
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/([0-9]+)$ admin/index.php?p=$1&TableUniqueID=$2 [S=1]
     
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/action/([_A-Z0-9a-z-+]+)/([0-9]+)/$ admin/index.php?p=$1&type=action&a=$2&TableUniqueID=$3 [S=1]
    RewriteRule ^admin/([_A-Z0-9a-z-+]+)/action/([_A-Z0-9a-z-+]+)/([0-9]+)$ admin/index.php?p=$1&type=action&a=$2&TableUniqueID=$3 [S=1]
     
     
     
    RewriteRule ^([_A-Z0-9a-z-+]+)/$ index.php?p=$1 [S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)$ index.php?p=$1 [S=1]
     
    RewriteRule ^([_A-Z0-9a-z-+]+)/action/$ index.php?p=$1&type=action [S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)/action$ index.php?p=$1&type=action [S=1]
     
    RewriteRule ^([_A-Z0-9a-z-+]+)/action/([0-9]+)/$ index.php?p=$1&type=action&TableUniqueID=$2 [S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)/action/([0-9]+)$ index.php?p=$1&type=action&TableUniqueID=$2 [S=1]
     
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/$ index.php?p=$1&TableUniqueID=$2 [S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)$ index.php?p=$1&TableUniqueID=$2 [S=1]
     
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/([0-9]+)/$ index.php?p=$1&Lalabhai=$2&TableUniqueID=$3 [S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/([0-9]+)$ index.php?p=$1&Lalabhai=$2&TableUniqueID=$3 [S=1]
     
     
    </IfModule>

  2. #2
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    On a pas beaucoup d'info sur ce coup:

    1) tu pourrais déjà nous indiquer ce que tu as déjà essayé, histoire qu'on ai au moins l'impression que tu ai essayé par toi même plutôt que d'attendre simplement qu'on te donne la réponse toute cuite dans la bouche...
    Perso, aider quelqu'un qui essaye, qui galère, je veux bien, en lui expliquant pourquoi pour que par la suite il arrive à le faire de lui-même, autant donner une réponse toute faite a quelqu'un qui n'a même pas essayé (ou n'en donne pas l'impression), pour qu'il repause la même question dans 2 jours... j'ai envie de le laisser se démerder
    Et je crois que tout les membres de ce forum on le même ressenti a ce niveau

    2) http://localhost/site/nom_client ça ne sera pas possible:
    il te faut forcement une information sur l'identité de la personne, donc laisser l'ID,
    Sauf si "nom_client" est remplacé par le vrai nom du client, mais la encore, on a pas l'information donc on ne peut pas trop t'aider.

    3) même si "nom_client" est remplacé par le vrai nom du client, ça peut pauser problème puisque "mon-pseudo" et "mon pseudo" auront deux url équivalente une fois encodée ou slugifiée.
    Donc tu ne peux faire ceci UNIQUEMENT si tu n'a autorisé QUE les caractères alphanumérique dans le nom de tes utilisateurs.

    Sinon pour la piste, les lignes que tu dois modifier sont les deux dernières lignes (39 40) de ton fichier (celle qui corresponde a ton url).
    mais fait attention, si tu réduit ton url, tu risque de créer des conflits avec les lignes précédentes.

    Avec le peu d'info qu'on a, la seule chose que je puisse faire, c'est te proposer de lire de la doc sur la réécriture d'url:

    * https://craym.eu/tutoriels/reference...rewriting.html.
    * http://httpd.apache.org/docs/2.0/misc/rewriteguide.html (plus officiel, mais en anglais)

    La prochaine fois, essaye de donner l'impression que tu as essayer plutot que de pauser une question du genre "Vous pouvez me faire le boulot a ma place ?"

    Bonne chance.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre réponse ainsi pour votre critique.
    ça fait plus que 2 ans que j'ai inscris dans ce forum et c'est le 2éme problème que j'ai posté.
    je préfère de faire des recherches et de trouver les solutions sans donner mon boulot à quelqu’un.

    La preuve, j'ai déjà essayé ce tuto mais sans résultat

    de http://www.developpez.net/forums/d10...ertoire-l-url/

    .htacces s'applique sur toutes les pages et tous marche très bien, je veux juste pour url localhost/site/immeuble/nom_client/12 masquer immeuble

    nom_client: c'est juste un exemple. normalement le nom récupéré par la base donner, table: les nom des clients

    Merci encore

  4. #4
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Autant pour moi alors
    Note que j'avais mis le conditionnel ^^

    Après sans parler de mettre ton code ou ton travail, ce que je peux tout à fait comprendre, tu pourrais nous indiquer ce que tu as déjà essayé de faire, simplement pour montrer que tu as essayé

    Alors, déjà, je peux te donner une petite astuce qui réduira par deux ton fichier .htacces:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/([0-9]+)/$ index.php?p=$1&Lalabhai=$2&TableUniqueID=$3 [S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/([0-9]+)$ index.php?p=$1&Lalabhai=$2&TableUniqueID=$3 [S=1]
    tu peux utiliser une seule ligne pour tout ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/([0-9]+)/?$ index.php?p=$1&Lalabhai=$2&TableUniqueID=$3 [S=1]
    le "?" après le "/" rends ce dernier facultatif

    Ensuite, pour ton problème, je pense qu'il suffit de supprimer le premier groupe de regex pour arriver a ce que tu souhaites, et de forcer la page rediriger:

    Pour le moment ta règle défini ceci:
    1) doit commencer par un groupe lettre, chiffre, "-", "_" ou "+", autant que tu veux (1 ou plus),
    2) suivit d'un /
    3) suivit d'un groupe des lettre, chiffre, "-", "_" ou "+", autant que tu veux (1 ou plus),
    4) suivit d'un /
    5) suivit d'un groupe de chiffre, autant que tu veux (1 ou plus)
    6) fini par un / (ou pas, grâce au "?")

    donc en gros untruc/unautretruc/123 rentre dans cette condition.
    et cela redirigera vers
    index.php?p=untruc&Lalabhai=unautretruc&TableUniqueID=123

    toi tu a besoin de supprimer la première partie, mais d'atteindre la bonne page,
    Donc, logiquement, quelque chose comme ça devrait faire l'affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([_A-Z0-9a-z-+]+)/([0-9]+)/?$ index.php?p=immeuble&Lalabhai=$2&TableUniqueID=$3 [S=1]
    si tu veux aussi supprimer l'ID, il faut plutôt quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([_A-Z0-9a-z-+]+)/?$ index.php?p=immeuble&Lalabhai=$2 [S=1]
    mais dans ce cas tu ne pourra plus utiliser ta variable TableUniqueID dans ton code php (ou .net ou autre) (puisque cette variable n'existe plus)

    Le dernier truc a faire attention, c'est que cela ne créé pas de conflit avec les autres règles
    Donc il faut faire attention a quel endroit tu va placer cette règles, et qu'aucune autre page ne rentre dans cette condition.
    par exemple, avec la dernière ligne que j'ai mis:
    http://localhost/site/nimportequoi rentrera dans cette condition, donc, par exemple, si tu as une page http://localhost/site/page_accueil, cela va pauser problème.

    Dans ce cas, malheureusement, pas de solution magique: tu ne peux pas utiliser de règle générique, il va falloire utiliser des règle exactes, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteRule ^page_accueil/?$ index.php?p=page_accueil [L,S=1]
    RewriteRule ^([_A-Z0-9a-z-+]+)/?$ index.php?p=immeuble&Lalabhai=$2 [S=1]
    Dans ce cas, si la page est http://localhost/site/page_accueil, la première règle prends le dessus, et fini (gâce au flag [L])
    Sinon, la deuxième règle prendra la suite.

    Attention également, il est possible que tu ne doivent pas modifier, mais ajouter cette règle, dans le cas ou d'autre page de ton site utiliserai cette règle...
    mais tout ça je ne peux pas le deviner, ça sera a toi de bidouiller et tester le bon fonctionnement

    Tiens nous au courrant


    PS: Désolé, j'ai tendance a tutoyer tout le monde sur un forum


    Edit:
    Fait attention aussi quand tu utilise le flag [S=1], c'est un peu casse-gueule a mon gout, si j'ai bien compris, cela veux dire "Si la règle correspond, ne fait pas LA suivante" (mais il est possible qu'une autre règle s'applique plus loin)
    Mieux vaux utiliser le flag [L] qui indique que "si la règle correspond, c'est bon tu t'arrète la"

    Un bon article pour bien comprendre les flags: http://httpd.apache.org/docs/current/rewrite/flags.html

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci infiniment pour votre aide
    mais je n'ai pas encor réussi.

    pour plus d'info, voici le code de bouton détail.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo $AbsoluteURL;?>immeuble/<?=seo_title(viewtext($TPage[$i]['ImmName']))?>/<?=$TPage[$i]['ImmeID']?>" ><span>détail</span></a>

    J'ai ajouté cette ligne sur .htacces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([_A-Z0-9a-z-+]+)/([_A-Z0-9a-z-+]+)/([0-9]+)/?$ index.php?p=$1&Lalabhai=$2&TableUniqueID=$3 [S=1]

    Mais quand je clique sur bouton détail Url afficher c'est : http://localhost/site/immeuble/nom_client/23 et non http://localhost/site/nom_client/23

    Merci beaucoup.

  6. #6
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    La c'est plus vraiment du apache ^^

    A tu simplement essayer de supprimer "immeuble" de ton lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo $AbsoluteURL;?><?=seo_title(viewtext($TPage[$i]['ImmName']))?>/<?=$TPage[$i]['ImmeID']?>" ><span>détail</span></a>
    Sinon va plutot faire une tour du coté du forum PHP

    Par contre pour ta RewriteRule, comme je disais il va falloire la modifier, relis bien mon post et les différentes solutions que j'y apporte, c'est forcement dedant

    A première vu je pencherai pour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([_A-Z0-9a-z-+]+)/([0-9]+)/?$ index.php?p=immeuble&Lalabhai=$2&TableUniqueID=$3 [S=1]
    Mais prends bien en compte tout ce que je t'ai dis, par-ce que selon comment ton site fonctionne, je ne peux pas faire mieux

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    non si je supprime immeuble dans le lien, résultat page erreur, car immeuble est un fichier, immeuble.php dans ce fichier les annonces des clients.

  8. #8
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    ...

    Oui...

    D'ou le fait que je t'ai dis de l'ajouter dans ta RewriteRule...

    Je le redis: relis bien mes post, tout est expliqué...

    il te faut une règle qui FORCE la page immeuble:
    je cite:

    RewriteRule ^([_A-Z0-9a-z-+]+)/([0-9]+)/?$ index.php?p=immeuble&Lalabhai=$2&TableUniqueID=$3 [L]
    Tu vois bien que la page sera forcement "immeuble" si la condition est remplie.

    il faut chercher un peu plus loin que le bout de son nez, et ne pas oublier de lire la moitier de la réponse
    Désolé mais là je peux pas faire mieux.

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup enfin j'ai réussi mais après petite clique ( Restar Appache ) j'ai enregistrer .htacess sans redemander appache. Merci mille fois !!!

  10. #10
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Super
    Content d'avoir pu t'aider,

    si tu pouvais passer la discussion en "Résolu" ça serrait top

    A+

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

Discussions similaires

  1. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13
  2. url rewriting
    Par olive.m dans le forum Apache
    Réponses: 3
    Dernier message: 17/06/2005, 02h01
  3. .htaccess - url rewriting, besoin de conseils
    Par giminik dans le forum Apache
    Réponses: 2
    Dernier message: 25/04/2005, 20h18
  4. Activer l'url rewriting
    Par Otaugames dans le forum Apache
    Réponses: 2
    Dernier message: 09/03/2005, 14h58
  5. Url Rewriting / htaccess
    Par bisi dans le forum Apache
    Réponses: 4
    Dernier message: 25/07/2004, 22h12

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