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

PHP & Base de données Discussion :

Erreur 404 url rewriting


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Erreur 404 url rewriting
    Bonjour à tous - en espérant être dans le bon forum

    J'ai réécrit mes url et le lien réécrit paraît bon mais j'ai une erreur 404, page introuvable.
    J'ai un doute sur ma requête php/Mysql, je ne suis vraiment pas bon là-dedans - mais je vous mets tous les éléments que j'ai.

    .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule     ^/v3/(.*)\.html$         "/v3/plante.php?id_plante=$1"   [QSA,L]
    Requête php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $req_plante = mysql_query("SELECT * FROM plantes");
    $plante = mysql_fetch_assoc($req_plante);
    mysql_close();
    ?>
    url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="v3/<? echo format_url($plante['nom']) ?>.html">Abutilon</a>
    Et mon erreur 404
    The requested URL /jardins-interieurs/v3/abutilon.html was not found on this server.
    J'ajoute que normalement, le httpd.conf est bien configuré.
    Merci si vous pouvez me donner un coup de pouce.

  2. #2
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Points : 144
    Points
    144
    Par défaut
    J'ai eu le meme souci.

    Déjà:

    non pas mais
    Pensez à la portabilité de vos scripts .

    Tu dois mettre l'addresse absolue dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="v3/<? echo format_url($plante['nom']) ?>.html">Abutilon</a>
    Cei qui donnerait (attention au / à la fin):

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //variable à déclarer à ta base de ton site
    $address_website = 'http://wwww.ton-site.com/';
    <a href="<?php echo $address_website;?>v3/<? echo format_url($plante['nom']) ?>.html">Abutilon</a>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Il me semble qu'on est pas obligé d'avoir l'adresse complète.
    Un point devant le premier slash devrait suffire.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Déjà, merci pour vos réponses - ça fait plaisir
    andaman, grossière erreur de ma part d'utiliser encore des désolé.
    J'ai donc modifié comme vous me l'avez demandé, ce qui donne ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $req_plante = mysql_query("SELECT * FROM plantes");
    $plante = mysql_fetch_assoc($req_plante);
    $address_website = 'http://localhost/jardins-interieurs/';
    mysql_close();
    ?>
    Et l'url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo $address_website;?>v3/<?php echo format_url($plante['nom']) ?>.html">Abutilon</a>
    Toujours la même erreur 404
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The requested URL /jardins-interieurs/v3/abutilon.html was not found on this server.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'y songe... on sait jamais. Dans la table 'nom', les noms comportent une majuscule en première lettre.
    Je fais donc un include d'une fonction qui modifie (entre autre) les majuscules en minuscules... au cas où y ait un problème à ce niveau-là
    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
    <?php
    //fonction pour re-ecrire les url
    function format_url($chaine) { 
     
    	// en minuscule
        $chaine=strtolower($chaine);
     
    	// supprime les caracteres speciaux
        $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/", "/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
        $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
        $chaine = preg_replace($accents, $sans, $chaine);  
        $chaine = preg_replace('/#[^A-Za-z0-9]#/', '/-/', $chaine);
     
       // Remplace les tirets multiples par un tiret unique
       $chaine = preg_replace ( "/\-+/", '/-/', $chaine );
     
       // Supprime le dernier caractère si c'est un tiret
       $chaine = rtrim( $chaine, '-' );
     
        while (strpos($chaine,'--') !== false) 
    		$chaine = str_replace('--', '-', $chaine);
     
        return $chaine; 
     
    }
    ?>

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peux-tu tester que le fichier ".htaccess" est bon avant de faire la requête sql?

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    arf, cela fait mal au yeux... ( bon cela faisait longtemps que ne n'avais pas posté sur le forum, humhum ) .

    Pourrais tu être plus précis, car j'ai bien l'impression que tu mélange les liens, le htaccess, la base de données dans ta question.. cela fait un meli-melo pas possible!

    Sinon, oubli mysql, passe à PDO, tu gagnera du temps..

    fin..
    Conception / Dev

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ecatomb Voir le message
    Peux-tu tester que le fichier ".htaccess" est bon avant de faire la requête sql?
    Ecatomb, si je fais une réécriture basique du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options +FollowSymlinks
    RewriteEngine On
    RewriteRule ^foo.html$ test.html [L]
    la page foo.html est trouvée sans problème.

    ascito, je sais pas si je mélange tout - j'ai un problème et j'essaye de donner le plus d'infos possible pour qu'on détecte d'où vient mon problème - Lol.
    Et en me parlant de PDO, tu me parles papou mais je veux bien essayer d'apprendre le papou - mdr

  9. #9
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Points : 144
    Points
    144
    Par défaut
    MSQLI ou PDO te permettra de continuer à bosser ;-) Sinon ... cela va être dur de garder des clients sur du long terme ... Ou alors fais comme moi;-) Switch entre le procédural et la PDO et viens vivre au Cambodge !

    Concernant ton .Htaccess:

    J'ai simulé et avec cela c'est ok. A toi de voir la config:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^([a-z\-]+)$ index.php?section=$1 [L]
    De grâce, mets tout en minuscules dans ta base de données:

    http://php.net/manual/fr/function.strtolower.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo strtolower($ton_champ_de_requete -> ta_valeur);
    ?>

Discussions similaires

  1. Erreur bizarre url rewriting .htaccess
    Par tsukasag dans le forum Apache
    Réponses: 1
    Dernier message: 31/08/2008, 11h02
  2. Erreur 500 Url Rewriting
    Par acidline dans le forum Apache
    Réponses: 2
    Dernier message: 29/08/2008, 11h23
  3. [URL rewriting] mod_rewrite activé mais erreur 404
    Par arkienou dans le forum Apache
    Réponses: 7
    Dernier message: 13/09/2007, 11h21
  4. [Configuration] erreur 404, url demandée ?
    Par mikyfpc dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 08/10/2004, 09h37

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