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 :

la "rewrite rule" absolue


Sujet :

Apache

  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut la "rewrite rule" absolue
    Bonjour,

    Je souhaite récupérer tout ce qu'un utilisateur peut saisir après le host dans l'URL de mon site et cela grâce aux règles de réécriture.

    Par exemple je veux que cette url http://www.truc.com/ayaaa qui renvoie actuellement vers une page 404 Not Found soit désormais interprétée comme index.php?mapage=$1 et donc index.php?mapage=ayaaa.

    J'ai essayé pas mal de règle sans succès, dont la suivante en exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)\$ index.php?mapage=$1 [L]
    Pouvez-vous me trouver la règle qui convient svp ?

    (Je veux gérer entièrement les URLs depuis une classe Smarty en me dissociant des errorDocument etc...)

    Merci de votre écoute.

  2. #2
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Non oubliez...c'est une mauvaise idée.
    A moins que vous puissiez me dire comment générer les codes erreurs 301,404 etc... depuis PHP sans faire de redirection etc...

  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
    Par défaut
    Citation Envoyé par speedev Voir le message
    A moins que vous puissiez me dire comment générer les codes erreurs 301,404 etc... depuis PHP sans faire de redirection etc...
    Il suffit d'indiquer le statut 304 dans la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("404 Not Found");
    Donc c'est un code à mettre tout en haut de index.php, avant la toute première ligne de code HTML.

    Pour ta règle, elle me semble correcte au \ près devant le $ que je supprimerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ index.php?mapage=$1 [L]
    Mais du coup, tout va passer par index.php, y compris les .jpg, .css, etc.

  4. #4
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Je vois je vois, je teste ça tout de suite.
    Concernant la règle, j'ai testé sans le / aussi mais que neni.

    merci

  5. #5
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Ok pour le header mais ce n'est pas jouable avec mon développement malheureusement.

    Dans mon cas, grâce aux règles de réécriture, je récupère dans tous les cas une variable page depuis une URL quelle qu'elle soit et je checke son existence.
    Si elle n'existe pas (et c'est là que je veux intervenir), plutôt que de faire un header("Location...) ou tout autre redirection, je souhaite pré-sélectionner mon template d'erreur correspondant (404.tpl par exemple) et indiquer en même temps au navigateur le code erreur 404.

    Cela me permettrait de ne pas faire de redirection, de ne pas sortir l'internaute d'un contexte éventuel dans lequel il se trouve etc...

    C'est là où je bloque...

  6. #6
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Autant pour moi c'est finalement opérationnel avec ta solution.
    Merci.
    a+

  7. #7
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Pour info j'utilise cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("Status: 404 Moved Permanently", false, 404);
    plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("404 Not Found");
    Le code 404 est passé dans le header mais pas avec la deuxième solution.

  8. #8
    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
    Par défaut
    Euh... Si tu veux faire les choses bien, tu ne peux pas mettre une erreur "Moved Permanently" sur un code 404 : le 404, c'est pour un document non trouvé ou qui n'existe pas, alors qu'une erreur "moved permanently" suppose que le document existe mais pas à l'adresse indiquée et que tu indiques la vraie adresse à laquelle se trouve le doc (donc tu fais une redirection). Il y a donc une très grosse différence sémantique entre les deux donc fais attention aux codes que tu veux utiliser, ils sont importants.

  9. #9
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Ca m'apprendra à faire un bête copier coller.
    Je m'intéressais au 3ème paramètre et j'ai mm pas fais gaffe au texte.
    Merci

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

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55
  2. Réponses: 2
    Dernier message: 24/11/2005, 19h13

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