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] Rewriting d'URL sans suffixe


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [URL rewriting] Rewriting d'URL sans suffixe
    Bonjour à tous !

    Je commence à me pencher sur le principe de l'url rewriting pour un nouveau projet de site, et j'ai quelques soucis.

    Lors d'une réécriture de ce type :
    monsite.com/truc.html => monsite.com/index.php?page=truc

    j'utilise une ligne dans mon .htaccess comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^/]*).html$ index.php?page=$1 [L]
    Ça, ça fonctionne !
    Cependant, j'aimerais bien pouvoir accéder à ma page en tapant directement :
    monsite.com/truc

    Mais si je modifie le htaccess pour obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^/]*)$ index.php?page=$1 [L]
    La variable $_GET['page'] contient "index.php"
    La, j'avoue être dépassé par le truc et ne plus comprendre grand chose.

    Je suis tenté de passer par la méthode qui consiste à utiliser les pages 404 pour ensuite faire les redirections, mais j'aimerais bien comprendre le rewrite_mod, qui me semble "fait pour", contrairement à l'autre qui a l'air d'être un trick plutôt qu'une solution.

    Quelqu'un saurait m'en dire plus ?

    Merci à vous !

  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
    Citation Envoyé par Khamsin Voir le message
    Je suis tenté de passer par la méthode qui consiste à utiliser les pages 404 pour ensuite faire les redirections
    C'est toujours une bonne idée d'utiliser un marteau pour enfoncer une vis... Les ErrorDocument ne sont pas fait pour ça et il y a effectivement d'autres méthodes (mod_rewrite) pour y arriver. L'une des méthodes consiste simplement à ajouter une condition préalable pour dire "si en ajoutant .html à l'URM je tombe sur un fichier qui existe, alors je réécris" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^([^/]*)$ index.php?page=$1 [L]

    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Tout d'abord, merci pour ta réponse !

    Citation Envoyé par _Mac_ Voir le message
    C'est toujours une bonne idée d'utiliser un marteau pour enfoncer une vis... Les ErrorDocument ne sont pas fait pour ça et il y a effectivement d'autres méthodes (mod_rewrite) pour y arriver.
    Oui, c'est pour ça que je préfère réussir à arriver où je veux en utilisant le mod_rewrite ^^

    Citation Envoyé par _Mac_ Voir le message
    L'une des méthodes consiste simplement à ajouter une condition préalable pour dire "si en ajoutant .html à l'URM je tombe sur un fichier qui existe, alors je réécris" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^([^/]*)$ index.php?page=$1 [L]
    Le soucis dans mon cas, c'est que le fichier n'existe pas justement.

    J'aimerais pouvoir partir sur une url de type :
    monsite.com/truc
    Et réécrire en :
    monsite.com/index.php?page=truc

    Mais je n'arrive pas a obtenir la valeur "truc" dans la variable $1 .

  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
    Effectivement. On peut optimiser le filtre du RewriteRule en disant qu'il ne faut pas qu'il y ait de / ou . dans l'URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^/\.]*)$ index.php?page=$1 [L]
    Essaie voir aussi sans \ devant le .

    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ah en effet, il me manquait juste le point dans les exclusions de caractères, merci !
    J'ai enlevé le \ pour tester, ça marche tout aussi bien .

    J'ai donc quelque chose comme ça pour finir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteRule ^([^/]+)/([^/]+)/(.*)$ index.php?page=$1&controler=$2&param=$3 [L]
    RewriteRule ^([^/]+)/([^/.]*)$ index.php?page=$1&param=$2 [L]
    RewriteRule ^([^/.]+)$ index.php?page=$1 [L]
    C'est pile ce qu'il me fallait

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/08/2013, 14h38
  2. URL rewriting pour une URL sans fichier
    Par Kentin64 dans le forum Apache
    Réponses: 3
    Dernier message: 17/04/2013, 11h10
  3. Rewrite d'une url statique vers une url statique ?
    Par fatdarron dans le forum Apache
    Réponses: 1
    Dernier message: 15/08/2009, 11h35
  4. rewriting / Erreur d'URL.. un résultat étonnant
    Par Joe Le Mort dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 10/08/2006, 09h09
  5. Forcer l'url avec Rewrite
    Par nazoreen dans le forum Apache
    Réponses: 5
    Dernier message: 17/03/2006, 15h04

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