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
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut url rewriting
    Je suis en train de faire de l'url rewriting et j'ai quelques questions ,toutes mes pages seront en http://nomdedomaine/mapage ou http://nomdedomaine/mapage/
    tout d'abord est-ce aussi bien pour le référencement que http://nomdedomaine/mapage.html ?

    Pour rediriger mon ancienne url (http://nomdedomaine/mapage.php) vers la nouvelle , il faut faire un redirection 301 ou la faire en php ? (pour la redirection 301 on fait comment ?)

    Dois-je modifier tout les liens écrit dans mes scripts vers mes nouvelles url ?

    Comment reconnaître les différentes erreurs (401,403,404,500) si elle sont redirigés toutes vers un même fichier ?

    Et je ne comprend pas pourquoi avec cette instruction (dans le fichier .htacces) (en mettant un paramètre GET inexistant):
    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^mapage/([1-9]*)$ /mapage.php?page=$1
    sa me renvoie vers une page :
    Not Found

    The requested URL /mapage/mapage.php was not found on this server.
    Alors que dans mon script php il y a tout pour faire face a ce genre de situation.

    Merci

  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 didou91 Voir le message
    Je suis en train de faire de l'url rewriting et j'ai quelques questions ,toutes mes pages seront en http://nomdedomaine/mapage ou http://nomdedomaine/mapage/
    tout d'abord est-ce aussi bien pour le référencement que http://nomdedomaine/mapage.html ?
    Aucune idée. Il faut poser la question sur le forum référencement.

    Citation Envoyé par didou91 Voir le message
    Pour rediriger mon ancienne url (http://nomdedomaine/mapage.php) vers la nouvelle , il faut faire un redirection 301 ou la faire en php ? (pour la redirection 301 on fait comment ?)
    Alors, on va resituer les choses. PHP est un langage de programmation, souvent utiliser pour faire des sites Web mais pas que, et un redirection (301 = redirection permanente ; 302 = temporaire) est un message HTTP particulier qui dit que la ressource (l'URL) demandée se trouve ailleurs (301 = définitivement ; 302 = temporairement).

    Etant donné que tu peux programmer des sites Web en PHP, c'est évident que tu peux faire de redirection 301 en PHP mais en fait ça n'a rien à voir : rien ne t'oblige à utiliser PHP pour faire des redirections (301 ou 302). Tout dépend de la technologie utilisée sur le serveur Web. Si le serveur Web est Apache, tu peux faire des redirections 301 directement par configuration Apache. En fonction de ce qu'il s'agit de rediriger, c'est souvent ce qu'on cherche à faire pour des raisons de simplicité, mais quand c'est trop difficile par configuration Apache, on passe par une méthode plus évoluée : un script PHP mais pourquoi pas un CGI, une page en ASP (c'est possible), en HTML + JavaScript, etc.

    Donc tout dépend de ce que tu veux faire comme redirection : quand ? vers quoi ? et avec quoi ?

    Citation Envoyé par didou91 Voir le message
    Dois-je modifier tout les liens écrit dans mes scripts vers mes nouvelles url ?
    C'est très fortement recommandé car un navigateur qui accède au site pour la première fera tout d'abord une requête sur l'ancienne URL pour être redirigé ensuite. Si on peut éviter cette redirection, c'est préférable.

    Citation Envoyé par didou91 Voir le message
    Comment reconnaître les différentes erreurs (401,403,404,500) si elle sont redirigés toutes vers un même fichier ?
    Tout dépend de ce fichier. Par configuration Apache (si tant est que c'est une configuration Apache qui redirige aujourd'hui ces erreurs vers ce même fichier), c'est possible de diriger chaque type d'erreur sur un fichier différent.

    Citation Envoyé par didou91 Voir le message
    Et je ne comprend pas pourquoi avec cette instruction (dans le fichier .htacces) (en mettant un paramètre GET inexistant):
    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^mapage/([1-9]*)$ /mapage.php?page=$1
    sa me renvoie vers une page :

    Alors que dans mon script php il y a tout pour faire face a ce genre de situation.
    Deux choses a priori :
    1. L'URL gérée par cette règle est de la forme /mapage/des_chiffres. Vu le message d'erreur, j'ai l'impression que ce n'est pas ce que genre d'URL que tu demandes, mais je peux me tromper.
    2. La réécriture vers /mapage.php?... ne correspond pas au script mapage/mapage.php mais un script appelé "mapage.php" situé à la racine du site. Il y a encore une subtilité d'Apache qui m'échappe mais des fois, une réécriture ne marche pas à cause du / devant le second membre d'une RewriteRule : peut-être qu'en réécrivant vers mapage.php?... sans / devant corrigerait les choses.

    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 à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    la redirection 301 c'est pour rediriger mes anciens liens du genre page.php?page=2 vers page/2 donc comment faire une redirection 301 dans le fichier htaccess ?

    Donc pour chaque erreur différente je devrais rediriger vers un fichier différent ? Je ne peut pas savoir en php l'erreur pour afficher un message différent ?

    Pour la dernière question je viens de trouver (juste une histoire de redirection avec header)

  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 didou91 Voir le message
    la redirection 301 c'est pour rediriger mes anciens liens du genre page.php?page=2 vers page/2 donc comment faire une redirection 301 dans le fichier htaccess ?
    En te renseignant un petit peu, tu tomberas sur le fait qu'il faut que tu utilises mod_rewrite avec une RewriteCond pour récupérer la valeur du paramètre "page" et une RewriteRule qui fait la redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{QUERY_STRING} page=([0-9]+)
    RewriteRule page\.php page/%1 [R=301]

    Citation Envoyé par didou91 Voir le message
    Donc pour chaque erreur différente je devrais rediriger vers un fichier différent ? Je ne peut pas savoir en php l'erreur pour afficher un message différent ?
    Ca doit être possible mais tout dépend de la manière dont ta page PHP est appelée en cas d'erreur. Est-ce de la configuration Apache et si oui quelle est-elle ?

    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 à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Pour ma version apache je suis a la 2.2.21 (sous wamp)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ErrorDocument 404 /erreur_404.php
    RewriteRule ^([^inscription][a-zA-Z0-9]{7,12})$ /mapage.php?parametre=$1
    et la j'ai un petit problème avec ixadqPs2 pourtant la chaîne fait bien entre 7 et 12 caractères ( sa me renvoie sur ma page d'erreur) je ne comprend pas dutout

  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
    Du coup, pour les pages d'erreur, c'est plutôt simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ErrorDocument 404 /erreur.php?code=404
    ErrorDocument 500 /erreur.php?code=500
    ...
    et dans le code de erreur.php, tu récupères tout simplement 404, 500, etc. dans le paramètre d'URL code ($_GET["code"]).


    Pour l'erreur 404 avec ixadqPs2, voir mon message du 14/12/2012, 21h53, tout en bas.

    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 à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Du coup, pour les pages d'erreur, c'est plutôt simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ErrorDocument 404 /erreur.php?code=404
    ErrorDocument 500 /erreur.php?code=500
    ...
    et dans le code de erreur.php, tu récupères tout simplement 404, 500, etc. dans le paramètre d'URL code ($_GET["code"]).


    Pour l'erreur 404 avec ixadqPs2, voir mon message du 14/12/2012, 21h53, tout en bas.
    En faites je souhaite pouvoir envoyer une personne sur une page différente en fonction d'un paramétre qui est compris entre 8 et 12 caractère sinon si le parametre rentré est moins de 8 on l'envoie vers une erreur 404 , si il fait plus de 12 on l'envoie aussi vers une erreur 404 , j'ai écrit dans mon htaccess comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^inscription][A-Za-z0-9]{8,12})$ /mapage.php?parametre=$1
    sauf qu'en rentrant un paramètre (ixadqPs2) (localhost/ixadqPs2) je tombe sur mon fichier erreur 404 mais avec d'autres de 8 caractère je tombe bien comme si j'avais rentré mapage.php?parametre=(machaine)
    (je sais pas si c'est plus clair)

  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 peux donner une URL qui passe alors qu'elle ne devrait pas ?

    Tu as vidé le cache de ton navigateur avant de faire tes tests ?

    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

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    J'ai fait plein de test et justement j'ai que des urls qui ne passe pas alors qu'elle le devrait (http://localhost/iiiiiiii (ne marche pas) et deux trois truc comme ça)
    http://localhost/aaaaaaaa ne marche pas avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^inscription][A-Za-z0-9]{8,12})$ /mapage.php?parametre=$1
    mais que avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ /mapage.php?parametre=$1
    alors que sa fait bien 8 caractère je comprend pas

    Et oui j'ai vidé mon cache avant de faire les tests.

  10. #10
    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
    En effet, c'est très étrange. Tu peux donner des URL qui passent ? Je me demande si ce n'est pas le multiplicateur {7,12} qui pose problème mais je ne vois pas pourquoi.

    Et sans le / devant mapage.php ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ mapage.php?parametre=$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

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Salut ,
    j'ai essayer sans le slash mais sa ne marche toujours pas.
    Des urls qui passent ;
    -http://localhost/4Ag12R3D (8 caractères)
    -http://localhost/bbbbbbbb (8 caractères)
    -http://localhost/aaaaaaaaa (9 caractères)
    -http://localhost/aaaaaaaaaa (10 caractères)
    -http://localhost/KXt52968 (8 caractères)
    -http://localhost/KXt52968aaaa (12 caractères)
    -http://localhost/4969709h (8 caractères)
    -http://localhost/49697098 (8 caractères)

  12. #12
    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
    Ben ça marche comme il faut sur mon serveur perso. Du coup, je soupçonne un conflit avec d'autres règles de ton .htaccess. Est-ce que tu peux donner le .htaccess complet, s'il te plaît ?

    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

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Ouep;
    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
    RewriteEngine on
    php_flag default_charset utf-8
    AddDefaultCharset UTF-8
    ErrorDocument 400 /erreur_400.php
    ErrorDocument 401 /erreur_401.php
    ErrorDocument 403 /erreur_403.php
    ErrorDocument 404 /erreur_404.php
    ErrorDocument 500 /erreur_500.php
    ErrorDocument 503 /erreur_503.php
    DirectoryIndex /accueil.php erreur_404.php
    RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ /traitement.php?lien=$1
    RewriteRule ^accueil/?$ /accueil.php
    RewriteRule ^inscription/?$ /inscription.php
    RewriteRule ^connexion/?$ /connexion.php
    RewriteRule ^livreor$ /livreor.php
    RewriteRule ^livreor/([0-9]*)$ /livreor.php?parametre=$1
    RewriteRule ^contact/?$ /contact.php
    RewriteRule ^infos/?$ /infos.php 
    RewriteRule ^conditions_utilisation/?$ /cu.php 
    RewriteRule ^oublie/([1-2])$ /id.php?parametre=$1
    RewriteRule ^oublie$ /id.php [L]

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Désolé du double-post mais je viens de remarqué que quand j'enleve "[^inscription]" de mon htaccess ligne 11 tout mes liens de menu sont prie comme des liens du genre http://localhost/1K73nd36 mais quand je le remet tout mes lien du menu remarche mais les liens du genre http://localhost/1K73nd36 ne marche plus... bizard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^inscription][A-Za-z0-9]{7,12})$ /traitement.php?lien=$1

  15. #15
    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
    Bizarre. Tu peux donner un exemple de lien dans ton menu ?

    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

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Salut ,
    en faites j'ai marquer dans mon htacces "[^inscription]" pour empecher que ma page http://localhost/inscription soit pris comme un lien "http://localhost/KXt52968" sinon j'ai aussi comme lien dans mon menu : http://localhost/connexion
    mais quand je met "[^inscription]" tout mes liens de menu marche mais pas mes lien comme ceux ci "http://localhost/KXt52968"
    tu ne saurais pas comment que les fichiers php ne soit plus accesible directement par ex interdire l'accès a http://localhost/connexion.php mais autoriser seulement http://localhost/connexion (par exemple)

  17. #17
    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 didou91 Voir le message
    Salut ,
    en faites j'ai marquer dans mon htacces "[^inscription]" pour empecher que ma page http://localhost/inscription soit pris comme un lien "http://localhost/KXt52968"
    Cette notation [^inscription] n'est pas du tout la bonne notation pour ce que tu veux faire. C'est peut-être ça le problème. Essaie plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} ^/inscription
    RewriteRule ^([A-Za-z0-9]{9,13})$ /mapage.php?parametre=$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

  18. #18
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Salut,
    sa ne marche toujours pas...
    En faites il fraudait dire que quand le parametre est egale a inscription ou connexion ou accueil on ne vas pas sur mapage.php...

  19. #19
    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
    "Ca ne marche pas" reste toujours aussi vague : quelle URL dans la barre du navigateur ? quel message d'erreur exact indiqué par le navigateur ? Bref, des précisions.

    Citation Envoyé par didou91 Voir le message
    En faites il fraudait dire que quand le parametre est egale a inscription ou connexion ou accueil on ne vas pas sur mapage.php...
    C'est ce qu'est censé faire le RewriteCond, mais peut-être faut-il l'adapter un peu : si l'URL inscription est dans un "sous-répertoire" (http://site.com/toto/inscription) ma règle ne va pas car elle vérifie que l'URL commence strictement par "/inscription" et pas "/toto/inscription".


    Tu as essayé aussi en supprimant le / devant mapage.php dans la RewriteRule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} ^/inscription
    RewriteRule ^([A-Za-z0-9]{9,13})$ mapage.php?parametre=$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

  20. #20
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Salut,
    en faite sa marche bien , il fallait juste attendre une dixaine de minutes (je ne sais pas pourquoi mais a chaque modification sur mon htaccess les modification réel ne se font pas)

    merci encore !

+ 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, 18h13
  2. url rewriting
    Par olive.m dans le forum Apache
    Réponses: 3
    Dernier message: 17/06/2005, 03h01
  3. .htaccess - url rewriting, besoin de conseils
    Par giminik dans le forum Apache
    Réponses: 2
    Dernier message: 25/04/2005, 21h18
  4. Activer l'url rewriting
    Par Otaugames dans le forum Apache
    Réponses: 2
    Dernier message: 09/03/2005, 15h58
  5. Url Rewriting / htaccess
    Par bisi dans le forum Apache
    Réponses: 4
    Dernier message: 25/07/2004, 23h12

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