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 :

RewriteEngine d'une page php


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut RewriteEngine d'une page php
    Bonjour,


    Si j'ai bien Compris :


    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^([a-zA-Z0-9\-]*).php$ index.php?p=$1 [L]



    Doit transformer le lien ex : http://monsite.fr/contact.php en >>> http://monsite.fr/index.php?p=contact

    code d'include de ma page

    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
    <?php
    $d="contenu/";
    if(isset($_GET['p'])){
    	$p=strtolower($_GET['p']);
    	if(preg_match("/^[a-z0-9\-]+$/",$p) && file_exists($d.$p.".php")){
    		include $d.$p.".php";
    	}
    	else{
    		include $d."404.php";
    	}
    }
    else{
    	include $d."accueil.php";
    }
    ?>

    Donc si http://monsite.fr/index.php?p=contact renvoi une page valide Sans .htaccess aprés l'avoir mis je devrais avoir la même page valide ??

    Merci d'avance

  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
    Pas avec ce .htaccess : il y a une seconde réécriture sur index.php index.php => index.php?p=index et c'est cette page que tu vois, pas la index.php?p=contact.

    On ne répètera jamais assez que [L] ne fait pas s'arrêter la réécriture mais simplement la boucle en cours : pour simplifier, mod_rewrite ne va définitivement s'arrêter que lorsqu'il aura trouvé une URL qui n'est pas réécrite ou lorsqu'on fait une redirection client. Dans ton cas, après la première réécriture (contact.php => index.php?p=contact), mod_rewrite va relancer un cycle de réécriture avec index.php?p=contact comme URL. Là, ta règle matche et on aboutit à index.php?p=index qui va être utilisée comme entrée pour une troisème boucle de réécriture. Là, de nouveau index.php?p=index matche ta règle, mais la sortie de la réécriture est identique à l'entrée (index.php?p=index) : mod_rewrite a enfin trouvé une URL qui converge, donc s'arrête et tu vois finalement le résultat de index.php?p=index.

    Pour t'en sortir, il suffit de mettre une condition préalable pour empêcher index.php d'être réécrit par ta règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond {REQUEST_URI} !index\.php
    RewriteRule ^([a-zA-Z0-9\-]*).php$ index.php?p=$1 [L]

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    j'ai utiliser le code que tu ma mis cela ne fonctionne toujours pas .
    en tout cas merci pour ce début de réponse

  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
    Ma faute : j'ai oublié un % dans le RewriteCond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !index\.php
    RewriteRule ^([a-zA-Z0-9\-]*).php$ index.php?p=$1 [L]

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    ça fonctionne! un grand merci sans toi je n'aurais jamais trouvé

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

Discussions similaires

  1. inserer une page php externe dans une page JSP
    Par vrossi59 dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/07/2005, 16h25
  2. Réponses: 11
    Dernier message: 11/03/2005, 17h41
  3. problème debodybackground dans une page php
    Par bertrand_declerck dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/02/2005, 22h39
  4. Boutons Radios qui charge une page php différente
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/11/2004, 15h25
  5. connection a mssql a partir d'une page php
    Par jean_marc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2003, 14h24

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