[RESOLU] url rewriting et include capricieux

Discussion dans 'URL Rewriting et .htaccess' créé par astanos, 17 Mars 2008.

  1. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Bonjour,
    J'ai un soucis lorsque je veux implémenter de l'url rewriting sur un domaine (chez infomaniak, php5).
    Les pages sont gérées en tant que pseudo-frames avec un include, ce qui donne une URL du type www.site.com/?page=toto
    L'index va chercher la page toto.php et l'inclue dans le corps de la page.
    Au début de mon index, j'utilise la fonction define(...) et j'inclue mes fichiers conf. Je rappelle ensuite if(!defined(...)) {die('accès interdit')} sur toutes les autres pages du site, afin d'en empêcher l'accès direct.

    J'aimerais donc obtenir www.site.com/toto/

    Le mod_rewrite est bien activé (testé avec RewriteRule ^test.html$ /test.php [L], ça marche nickel)

    J'ai saisi ceci dans mon .htaccess:

    Code:
    Options +FollowSymlinks
    RewriteEngine on
    
    RewriteRule ^([a-z]+)/$ /index.php?page=$1 [L]
    ou
    Code:
    RewriteRule ^([a-z]+)/$ /?page=$1 [L]
    (normalement les deux marchent)
    et même
    Code:
    RewriteRule ^toto/$ /index.php?page=toto [L]
    En utilisant l'url www.site.com/?page=toto, la page s'affiche. Par contre, en utilisant www.site.com/toto/ c'est comme s'il allait chercher www.site.com/toto.php et non www.site.com/?page=toto. Conclusion: j'ai un magnifique 'accès interdit'...
    J'ai tenté d'enlever le define() pour voir comment le tout réagi, mais cette fois c'est mes fichiers conf qui ne sont pas inclus. On dirait qu'il 'zappe' la page index.php et l'include et va directement chercher la page inclue...
    Par contre ca marche à la perfection en local (Win, easyPHP 2.0b1)

    Auriez-vous une idée?

    Merci d'avance =)
     
  2. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    Il n'y a pas de problème dans la règle citée mais tu peux ajouter un test devant pour éviter de réécrire pour un répertoire ou un fichier existant :
    Code:
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([a-z]+)/$ /index.php?page=$1 [L]
    tu utilises bien la variable $_GET['page'] dans index.php pour récupérer la page?
     
  3. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Toujours la même chose malgré le test que tu m'as proposé :/

    Sinon les pages sont bien récupérées avec un $_GET['page']. Par contre pas directement dans l'index, mais dans un fichier menu.php où je compare le $_GET reçu avec un switch et des noms de pages prédéfinis. (fichier menu.php en require en haut de mon index)

    Ce que je ne comprends pas c'est que ça marche en local mais pas en prod sur un serveur.
     
  4. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    c'est peut être un problème de chemin d'accès "relatif" car avec ta réécriture, les fichiers sont relatif au répertoire virtuel /toto/ et plus la racine.
     
  5. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Possible que se soit un problème de chemin relatif, mais alors pourquoi ma redirection pointe vers www.site.com/toto.php?
    Cette page n'est jamais accédée directement, elle est inclue dans index.php :/
    D'ailleurs si j'insère un echo 'page: '.$_GET['page']; au début de toto.php, que je vais à www.site.com/toto/ il ne me retourne que 'page: ' et rien d'autre. Pas de valeur dans le get, aucune page inclue, rien. Il me fait donc bien pointer www.site.com/toto/ sur www.site.com/toto.php
     
  6. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    le problème de lien relatif est uniquement en html (pour les liens et les images de la page) pas au niveau php ou htaccess.

    pour voir d'ou vient le problème je remplacerais index.php dans le .htaccess par test.php avec uniquement un echo $_GET['page'] dedans.
     
  7. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Rien à faire...
    Avec une page de test toute simple et un echo $_GET['page'] ça marche. Que se soit le rewriting et l'echo du $_GET

    Avec une page de ce style:

    Code:
    echo 'bibi';
    
    include($_GET['page'].'.php');
    il m'affiche la page inclue mais pas de 'bibi' sur la page... donc en gros il me retourne la page inclue et c'est tout. Rien de ce qui est sur la page principale comprenant l'include :/
     
  8. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    il doit y avoir une redirection avec un header() dans l'include
     
  9. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Bah voici mes 2 pages de test:

    test.php
    Code:
    <?php
    echo 'bibi';
    
    include($_GET['page'].'.php');
    ?>
    et phpinfo.php
    Code:
    <?php
    
    phpinfo();
    
    ?>
    Pas de headers défini. Et malgré ça, www.site.com/phpinfo/ n'affiche pas 'bibi' en début de page, alors qu'il devrait.
     
  10. astanos
    astanos Nouveau WRInaute
    Inscrit:
    17 Mars 2008
    Messages:
    8
    J'aime reçus:
    0
    Bonjour tout le monde,

    Pour info, problème résolu il y a quelques jours grace au staff d'infomaniak.
    L'astuce: ajouter ceci dans le .htaccess:

    Code:
    Options -MultiViews
    Le MultiViews permet la substitution d'extensions qui sert entre autre à pouvoir appeler la page www.site.com/toto.php par www.site.com/toto ou même www.site.com/toto/ <- le problème était donc là!
    Donc si quelqu'un d'autre à ce genre de soucis chez infomaniak... il saura quoi faire :)
     
  11. ova
    ova Nouveau WRInaute
    Inscrit:
    2 Janvier 2005
    Messages:
    33
    J'aime reçus:
    0
    Merci !

    Je viens effectivement d'avoir ce pb sur un serveur infomaniak ! Et grâce à toi, c'est résolu !

    Merci d'avoir pour l'info !

    :: Ova ::
     
  12. benoith
    benoith Nouveau WRInaute
    Inscrit:
    22 Mai 2008
    Messages:
    1
    J'aime reçus:
    0
    Ce problème est toujours d'actualité!
    J'ai perdu une demi-journée dessus, et Infomaniak n'a pas su trouver la solution!!!

    Bref, merci BEAUCOUP!
     
Chargement...
Similar Threads - [RESOLU] rewriting include Forum Date
redirection apres rewriting [résolu] URL Rewriting et .htaccess 20 Décembre 2010
[Résolu] - php - URL Rewriting chez free (free.fr) Développement d'un site Web ou d'une appli mobile 23 Juillet 2010
[résolu] tirets dans url rewriting ??? Débuter en référencement 5 Juin 2010
[RESOLU] Comment trouver les liens créés par l'URL Rewriting URL Rewriting et .htaccess 18 Mai 2010
[RESOLU] Offre Perso, Joomla1.5 et URL Rewriting URL Rewriting et .htaccess 2 Mars 2010
[résolu] Erreur 500 avec EasyPHP 5.3.0 et les URL rewriting URL Rewriting et .htaccess 10 Février 2010
[Résolu] Url Rewriting et phpThumb URL Rewriting et .htaccess 17 Décembre 2009
Problème URL Rewriting complexe avec les dossiers rééls et les autres chemins [Résolu] URL Rewriting et .htaccess 16 Juin 2009
[résolu] Souci URL rewriting + redirection 301 URL Rewriting et .htaccess 10 Décembre 2008
[RESOLU] Probléme avec url rewriting URL Rewriting et .htaccess 27 Septembre 2008
[Résolu] Url rewriting, conditions négatives et autres URL Rewriting et .htaccess 22 Septembre 2008
[RESOLU]URL Rewriting de base chez 1and1 URL Rewriting et .htaccess 20 Septembre 2008
URL rewriting avec paramètres [RESOLU] URL Rewriting et .htaccess 11 Septembre 2008
[RESOLU] Redirection ou rewriting ? URL Rewriting et .htaccess 10 Septembre 2008
[Résolu] .htaccess en local (rewriting) Développement d'un site Web ou d'une appli mobile 11 Juillet 2008
[Résolu]URL Rewriting & OVH: certaines RewriteRule HS URL Rewriting et .htaccess 10 Mai 2008
[resolu]Petit coup d'oeil rapide sur rewriting? URL Rewriting et .htaccess 26 Mars 2008
[Resolu] Probleme d'URL Rewriting avec variable texte URL Rewriting et .htaccess 4 Mars 2008
[Resolu] URL rewriting : "?" en trop URL Rewriting et .htaccess 21 Février 2008
[Résolu] Rewriting OVH problème avec un slash URL Rewriting et .htaccess 19 Février 2008