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 pour toutes les pages


Sujet :

Apache

  1. #1
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut URL Rewriting pour toutes les pages
    Bonjour,

    J'ai quelques règles (5 en tout) en place qui fonctionnent bien.
    Cela dit, quelques requêtes passent à travers ces règles et aimerais les rediriger.
    Du coup, j'aimerais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteRule ... [L]
    RewriteRule ... [L]
    ...
    RewriteRule ^.*$ pagetrounoir.php?param=$1
    où cette dernière règle est celle que je cherche.
    Avec celle-ci, le problème est que toutes les pages sont réécrites (même celles déjà réécrites et qui fonctionnaient auparavant), alors que je souhaite que cela soit pour les pages ne correspondant pas aux premières règles uniquement.

    Bonne journée

  2. #2
    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
    La façon la plus simple est d'ajouter un paramètre d'URL spécifique dans les premières réécritures et qui te sert de test sur la dernière réécriture : si le paramètre est absent, tu réécris.

    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

  3. #3
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    La façon la plus simple est d'ajouter un paramètre d'URL spécifique dans les premières réécritures et qui te sert de test sur la dernière réécriture : si le paramètre est absent, tu réécris.
    Bonjour,

    Je rajoute déjà des paramètres, donc je peux faire le test (en revanche, je ne sais pas faire ce genre de chose).
    Toujours est-il que cette dernière règle à remplacer les dernières urls passez au travers et qui doit s'appliquer aussi bien à :
    http://mondomaine.com/test.html que http://mondomaine.com/test/test/test.html
    d'où le ^.*$ qui me permet de tout filtrer.
    L'idéal serait plus un
    Si une réécriture a été faite, alors on ne fait plus rien, sinon on fait cette dernière règle.

  4. #4
    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 Paniez Voir le message
    Si une réécriture a été faite, alors on ne fait plus rien, sinon on fait cette dernière règle.
    C'est bien pour faire ce genre de chose que je suggère d'utiliser une variable d'URL. Ce n'est peut-être pas très propre mais ça marchera.

    Il faut utiliser RewriteCond pour tester la présence de la variable d'URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteRule ... ...?variableenplus=1 [L]
    RewriteRule ... ...?variableenplus=1 [L]
    ...
     
    RewriteCond %{REQUEST_URI} !variableenplus=1
    RewriteRule ^.*$ pagetrounoir.php?param=$1

    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

  5. #5
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Re,

    Avant tout, bonnes fêtes de fin d'année.

    Ensuite, je ne suis pas fan pour ajouter une variable. Mais, ça me donne une idée de repenser ma réécriture.
    Toutes mes pages sont de la forme (en rewriteurl) : ^([A-Za-z0-9_]+)-([A-Za-z0-9_:]+)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\\.html$
    Du coup, si je comprends bien rewritecond, on peut faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_URI} ^([A-Za-z0-9_]+)-([A-Za-z0-9_:]+)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\\.html$
    RewriteRule .... [L]
    RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_]+)-([A-Za-z0-9_:]+)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\\.html$
    RewriteRule ^.*$ pagetrounoir.php?param=$1
    Et ça, à la place de toutes me règles.

  6. #6
    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
    Oui

    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

  7. #7
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Re,

    Pour fonctionner, ça fonctionne ; ça fonctionne un peu beaucoup trop par contre : plus de css, javascript, sans parler des images.
    Là où j'ai du mal à comprendre est que même mes pages bien formées passent dedans.

    Du coup, je vais recommencer mon post.


    Mes pages sont de la forme http://mondomaine.ltd/mapage.html que je transforme avec un rewriterule en http://mondomaine.ltd/index.php?page=mapage

    Je souhaite que toutes demandes à mon serveur soient réécrites en cette forme (si on met http://mondomaine.ltd/sfdfsdfsfsfsfds.fdsf.fsdfdfs que ça devienne http://mondomaine.ltd/index.php?page=sfdfsdfsfsfsfds.fdsf.fsdfdfs).
    Pour exclure les css, js et images, j'ai fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.css$
    RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.js$
    RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.png$
    RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.jpg$
    RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.gif$
    Bonne journée

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu as une façon plus simple d'écrire toutes tes RewriteCond en 1 ligne qui signifie "si l'URL qu'on demande ne correspond pas à un fichier existant" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{REQUEST_FILENAME} !-f

    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2011, 17h43
  2. Réponses: 1
    Dernier message: 29/11/2008, 10h01
  3. En-tête pour toutes les pages
    Par ProgVal dans le forum Débuter
    Réponses: 7
    Dernier message: 21/05/2008, 18h09
  4. [ASP.NET] URL fixe pour toutes les pages d'un site
    Par Ant8386 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/09/2007, 15h57
  5. variables globales pour toutes les pages
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/04/2007, 10h28

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