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

Langage PHP Discussion :

[URLRewriting] La page ne s'affiche pas toujours de la même manière


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut [URLRewriting] La page ne s'affiche pas toujours de la même manière
    Bonjour,
    j'arrive dynamiquement à générer des url du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monsite.com/article-30-sur-videos-divers.html
    mais cela ne me donne pas la page que j'attends, est-ce un probleme de mon htaccess ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DirectoryIndex index.php
    RewriteEngine on
    RewriteRule article-([0-9]+).* /test.php?module=categorie&catid=$1 [L]
    RewriteRule tous-les-articles.* /test.php [L]
    si quelqu'un pouvait m'eclairer ce serait sympas,
    merci

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Si tu mets die('test'); au début de ton script test.php, que se passe-t-il ?

    Sinon, pour la réécriture de liens, je te recommande plutôt d'étudier les frameworks comme le ZF, cela devrait te simplifier la vie.

  3. #3
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    il ne se passe rien tout marche, le script va chercher mes liens dans la base de donnée, il les réecrit correctement comme je veux mais lorsque je clique dessus la page a la bonne url reecrite mais elle reste vide au lieu d'afficher mon contenu php.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    J'essaie de te faire deviner si le problème vient de ton .htaccess ou du .php...
    Regarde le fichier log apache et le log php, au pire.

  5. #5
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    je comprends pas excuse moi....
    Mon php est là et je ne comprends pas pourquoi ca marche pas :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    // Afficher les liens à réécrire
    ?>
     
    <?php
    while($categorie = mysql_fetch_assoc($result)){
    ?>
     
     <a href="index.php?module=categorie&catid=<?php echo $categorie['id']; ?>"><?php echo $categorie['libel_categories']; ?></a> 
     
    <br />
    <?php
    }
     
    // Récupérer le tampon et arrêter la mise en cache
    $contents = ob_get_contents();
    ob_end_clean();
    // Récupérer les liens à l'aide d'une expression régulière   '#<a href="index.php\?a=([0-9]+)">(.+)</a>#Usi',
    if(preg_match_all(
    '#<a href="index.php\?module=categorie&catid=([0-9]+)">(.+)</a>#Usi',
    //'#<a href="index.php\?module=categorie&catid=([0-9]+)&code=([0-9]+)">(.+)</a>#Usi',
    $contents,
    $matches,
    PREG_SET_ORDER))
    {
    // Parcourir les liens et les réécrire à l'aide de la base de données
    foreach($matches as $match){
    $pattern = $match[0];
    $article_id = $match[1];
    $anchor = $match[2];
    $sql = 'SELECT `libel_categories`, `url`
    FROM `wt_categories`
    WHERE `id` = '.$article_id;
    $result = mysql_query($sql)
    or die(__LINE__.' : '.mysql_error());
    if($categorie = mysql_fetch_assoc($result)){
    //$new_url =
    //'<a href="article-'.clean($categorie['url']).'-sur-'.$article_id.'.html" '
    //.'title="'.$categorie['libel_categories'].'">'
    //.$categorie['libel_categories']
    //.'</a>';
     
    $new_url =
    '<a href="article-'.$article_id.'-sur-'.clean($categorie['url']).'.html" '
    .'title="'.$categorie['libel_categories'].'">'
    .$categorie['libel_categories']
    .'</a>';
     
    $contents = str_replace($pattern, $new_url, $contents);
    }
    }
    }
    // Afficher la page
    echo $contents;
    ca me rend dingue cette histoire !!!

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Tu as une page blanche, n'est-ce pas ? Ce n'est pas très utile pour le débogage, une page blanche... Essaie d'obtenir autre chose qu'une page blanche pour déterminer la cause du problème.

    Donc : Ajoute quelque chose d'évident dans le script PHP, une instruction comme die() me semble parfaite...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die('arrêt du script');
    Si tu ne vois pas ceci après l'avoir mis dans test.php, alors c'est que ton script n'est pas appelé et que le problème vient du .htaccess.

    Consulte les logs pour savoir ce qu'il se passe.

  7. #7
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    J'ai ajouté ce que tu m'as dis à la fin de mon script et cel me marque 'arret du script'

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Tu viens d'apprendre deux choses :
    • Le .htaccess renvoie bien vers le bon script ;
    • Le script est syntaxiquement correct.

    cela ne me donne pas la page que j'attends
    Il te reste à nous expliquer ce que tu entends par là. Sois précis et concis, stp.

  9. #9
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    ce qu'il ne va pas c'est que quand je voudrai que
    article-21-sur-videos-musique-nice.html
    ouvre la page
    index.php?module=categorie&catid=21
    . Or là cela ne m'ouvre rien !

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Donc je répète : si tu mets die('truc') dans ce script de destination, as-tu l'affichage du die() ?

  11. #11
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    oui si en bas de la page test.php que j'ai modifié selon ton modèle du tutorial je mets l'instruction die('arret') cela m'affiche bien 'arret'.

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par Yogui
    Tu viens d'apprendre deux choses :
    • Le .htaccess renvoie bien vers le bon script ;
    • Le script est syntaxiquement correct.

    Il te reste à nous expliquer ce que tu entends par là. Sois précis et concis, stp.
    Bis

  13. #13
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    je vois toujours pas ce qui cloche je suis désolé, quand je le fais manuellement cela me donne ca pour le fichier htaccess et ca marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^monsite.com/article-([0-9]+)-sur-videos-divers\.html$ /index.php?module=categorie&catid=$1 [L]
    et là quand je tape monsite.com/article-30-sur-videos-divers.html cela me donne bien la page : index.php?module=categorie&catid=30

    là je veux faire pareil mais au lieu de saisir moi meme les url je veux les puiser dans ma base mysql. J'y arrive bien mais l'url ne m'affiche pas la page php correspondante tu vois ?

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Pour ma part, je ne vois pas grande différence entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RewriteRule article-([0-9]+).* /test.php?module=categorie&catid=$1 [L]
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RewriteRule ^monsite.com/article-([0-9]+)-sur-videos-divers\.html$ /index.php?module=categorie&catid=$1 [L]
    À part que le 2° code est + restrictif, donc le 1° devrait fonctionner + facilement.

    Je t'avais proposé de mettre die() au début du script, pas à la fin. Tu peux extrapoler en mettant $_GET['catid'] dans le die() afin de voir ce qu'il te dit, si c'est un problème de passage de paramètre par exemple

  15. #15
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    si je fais un die('arret') avant même la premiere instruction sur test.php alors la page est blanche, donc plus de menu et y a bien marqué 'arret'.

  16. #16
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Au risque de me répéter, c'est ça que je t'ai proposé :

  17. #17
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    oui je l'avais fais pardon, cela ne me renvoie rien, page blanche

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Écoute, je ne peux pas tut faire pour toi... Je suis là pour te guider, à toi de faire le chemin restant.
    Si tu ne peux pas afficher le paramètre GET alors que tu souhaites afficher la catégorie, c'est sans doute qu'il n'existe pas...

    Essaie avec ceci, puisque die() a du mal avec les valeurs autres que string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die('-'.$GET['catid']);
    Et creuse-toi la tête deux minutes, je t'assure que cela ira plus vite qu'attendre mon aide

  19. #19
    Membre averti Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Points : 377
    Points
    377
    Par défaut
    Mais je me creuse la tete crois moi ! J'ai déja fais des reecritures mais pas avec des urls qui proviennent d'une base de donnée.
    Y a que j'ai lu et relu ton tutorial, impriméetc.. et je ne comprends pas pourquoi cela ne marche pas.....je continue de chercher et je pense que je vais finir par trouver mais sur le net des reecriture via une base j'arrive pas en trouver pour compararer avec mon probleme....le jour où j'aurai compris ce qui ne vas pas j'aurai fais un grand pas...pour le moment je m'arrache les cheveux...

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Si dans ton .htaccess tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule article-([0-9]+).* /test.php?module=categorie&catid=$1 [L]
    Dans ton script test.php (au début) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die($_GET['module'].' '.$_GET['catid']);
    Et que tu charges l'une des URIs :Tu devrais obtenir :
    categorie 30

Discussions similaires

  1. [C#] Trace qui ne s'affiche pas toujours.
    Par vin100H dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/08/2007, 08h53
  2. [MySQL] La page ne s'affiche pas avec ce bout de code
    Par mimagyc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/08/2007, 23h56
  3. Serveur de production page ne s'affiche pas
    Par friiitz dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 10/05/2007, 18h18
  4. <html:errors /> Ma page ne s'affiche pas
    Par Zanton dans le forum Struts 1
    Réponses: 5
    Dernier message: 10/10/2006, 10h33
  5. Réponses: 9
    Dernier message: 04/10/2005, 19h39

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