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 :

Réécriture en .htaccess qui ne passe pas chez Online.net


Sujet :

Apache

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Réécriture en .htaccess qui ne passe pas chez Online.net
    Bonjour,
    Je viens une nouvelle fois vers vous car j'ai un soucis avec une règle de réécriture très simple sur le site d'un de mes clients.
    Avant de venir poster ici, j'ai contacter le sav de online.net mais comme c'est une bande de gros incompétent, je viens sur un forum ou je suis quasi sur d'avoir une réponse constructive.

    Voici mon problème (c'est pratiquement le même message que j'ai envoyer au support d'online.net) :

    Je travail sur la nouvelle version du site de mon client. Je travaille avec le framework cakePHP (dans ça version 1.2.6).
    Lorsque j'ai tenté la mise en ligne de la nouvelle version, j'ai eu un problème avec les règles de réécriture de cakephp, à force de tester j'ai trouver la réglé qui pose problème : RewriteRule (.*) app/webroot/$1 [L].
    Malheureusement, je ne comprend pourquoi cette règle provoque chez eux une erreur 500 alors que sur tous les serveurs concurrent celle-ci ne pose aucun problème.
    Voici, au cas où, la contenu complet de mon fichier htaccess:

    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
    AddType application/x-httpd-php5 .php
     
    RewriteEngine on
    RewriteBase /
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule (.*) app/webroot/$1 [L]
     
    RewriteCond %{HTTP_HOST} !^www\.domaine\.tld[NC]
    RewriteRule (.*) http://www.domaine.tld/$1 [QSA,R=301,L] 
     
    #RedirectPermanent /produit.php http://www.domaine.tld/fr/1-produit-creme.html
    #RedirectPermanent /bebefits.php http://www.domaine.tld/fr/2-bienfaits-creme.html
    #RedirectPermanent /application-advice.php http://www.domaine.tld/fr/3-conseils-dapplications.html
    #RedirectPermanent /sales.php http://www.domaine.tld/fr/4-achat-creme.html
    #RedirectPermanent /about-our-product.php http://www.domaine.tld/fr/5-plus-dinfos.html
    #RedirectPermanent /partenaire.php http://www.domaine.tld/fr/7-liens.html
    #RedirectPermanent /about-our-product.php?lg=es http://www.domaine.tld/es/5-mas-infos.html
    #RedirectPermanent /about-our-product.php?lg=en http://www.domaine.tld/en/5-about-our-product.html
    #RedirectPermanent /?lg=es http://www.domaine.tld/es/
    #RedirectPermanent /?lg=en http://www.domaine.tld/en/
    J'ai donc remis l'ancienne version pour ne pas pénaliser mon client.

    J'ai recherche sur google mais je n'ai rien trouver qui fonctionné sur online.net.
    Voici le phpinfo ce leur serveur : http://demo.online.net/index.php5, leurs serveur mutualisé tourne avec Apache version 1.3.34

    Avez-vous une idée pour régler ce problème ?

    En vous remerciant d'avance,
    Steven

    PS: Juste pour le fun voici la réponse super constructive qui m'a était envoyer par le sav :
    avez vous cherché dans la documentation d'apache1, nous ne confirmons pas la prise en charge de cakePHP

    Cordialement,
    --
    L'assistance technique Online

  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
    C'est toi qui a écrit cette règle ? Elle vient d'où ? Comme ça, je vois qu'elle provoque une boucle infinie de réécriture (elle crée des URL /app/webroot/app/webroot/app/webroot/app/webroot/app/webroot/...). Ce qui n'est pas logique c'est que tu n'as pas cette erreur. Donc soit je me trompe dans mon interprétation, soit y a un autre truc qui m'échappe.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Salut _Mac_,
    Merci pour ta réponse rapide.
    Cette règle provient de framework cakePHP en natif (fournie lors du dl du package zip).

    Cette réglé ne pose aucun problème sur mon serveur de teste (wampp et xampp), ni sur les serveurs ovh (quelque soit l'offre prise), tout c'est serveur tourne sur sur un apache version 2 mais chez online leurs serveurs tourne avec un apache première génération (1.3.34). Je pense que le problème provient de ça mais je ne sais pas comment régler le problème.

    Cordialement,
    Steven

  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
    Tu as une URL d'exemple (en masquant le domaine si nécessaire) à donner qui provoque cette erreur 500 ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Voici l'url exemple que tu ma demander : http://www.petitgris.fr/new/
    C'est une erreur 500 perso de online.net

    le fichier htacces est le même que celui-ci dessus à l'exception de la rewrite base :
    merci,
    Steven

  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
    Cette URL est censée faire exécuter/appeler quel fichier (chemin par rapport à la racine du site) ? Je pose la question car il y a plusieurs explications possibles au problème. Je pense qu'il va falloir mettre en place une condition sur la présence ou non de app/webroot dans l'URL ou le fait que l'URL (réécrite ou non) pointe sur un fichier ou un répertoire existant.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Cette url est sensé exécuté le fichier index.php ( à la racine du site ) qui lui exécute le controller "catégorie" et la view "index".

    Comme beaucoup de framework, tout les urls son redirigé sur l'index à la racine SAUF les fichiers contenu dans le répertoire public /app/webroot/.
    Eux aussi dispose d'une réécriture d'url (c'est celle-ci qui foire d'ailleurs).

    Dans le répertoire webroot, il y a mes fichiers css, javascript et toutes mes images, sans la réécriture l'url de fichier ressemblerai à ceci :
    http://www.domain.tld/app/webroot/styles.css

    avec la réécriture le même fichier obtient cette url :
    http://www.domain.tld/styles.css

    J'espère que j'ai été clair, sinon n'hésite pas à me demander plus d'info .

    Steven

    EDIT:
    voici l'arbo d'un application cake php:

    tous ce qui ce trouve dans le dossier webroot est visible publiquement.

  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
    On va ajouter une condition sur l'existence du fichier, dans ce cas :
    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
    AddType application/x-httpd-php5 .php
    
    RewriteEngine on
    RewriteBase /
    RewriteRule ^$ app/webroot/ [L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) app/webroot/$1 [L]
    
    RewriteCond %{HTTP_HOST} !^www\.domaine\.tld[NC]
    RewriteRule (.*) http://www.domaine.tld/$1 [QSA,R=301,L] 
    
    #RedirectPermanent /produit.php http://www.domaine.tld/fr/1-produit-creme.html
    #RedirectPermanent /bebefits.php http://www.domaine.tld/fr/2-bienfaits-creme.html
    #RedirectPermanent /application-advice.php http://www.domaine.tld/fr/3-conseils-dapplications.html
    #RedirectPermanent /sales.php http://www.domaine.tld/fr/4-achat-creme.html
    #RedirectPermanent /about-our-product.php http://www.domaine.tld/fr/5-plus-dinfos.html
    #RedirectPermanent /partenaire.php http://www.domaine.tld/fr/7-liens.html
    #RedirectPermanent /about-our-product.php?lg=es http://www.domaine.tld/es/5-mas-infos.html
    #RedirectPermanent /about-our-product.php?lg=en http://www.domaine.tld/en/5-about-our-product.html
    #RedirectPermanent /?lg=es http://www.domaine.tld/es/
    #RedirectPermanent /?lg=en http://www.domaine.tld/en/

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Salut _Mac_,

    Merci pour ce rajout dans le fichier htaccess, il y a du mieux.

    Je n'ai plus d'erreur 500 et la page d'accueil est disponible.

    Deux nouveau problème (qui doivent être lié à la même erreur) sont apparu. Lorsque je clique sur un lien en haut, j'ai une erreur 404 et lorsque je clique sur un lien en bas de page, j'ai de nouveau une erreur 500

    on va y arrivé lol

    http://www.petitgris.fr/new/

    Si tu a une nouvelle idée, ça serait cool,

    Merci bcp pour ton aide,
    Steven

  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
    Pour la différence entre le lien en haut et le lien en bas, je te laisse observer par toi-même pourquoi il y a une différence de comportement (une sombre histoire de /fr qui ne figure pas au même endroit dans l'URL).

    Pour l'erreur 500 (car on peut ignorer la 404 si tu as de bons yeux), je n'en ai aucune idée. Il y a un autre fichier .htaccess qui traîne quelque part dans le répertoire app/webroot/new ou app/webroot/new/fr, ou bien la conf que tu donnes est incomplète : avec juste ce que tu as donné, l'erreur 500 ne s'explique pas.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    salut _Mac_,
    Effectivement pour l'erreur 404 c'est de ma faute, j'ai oublié de changer une de mes configs, j'suis un boulet lol.

    Pour l'erreur 500, il n'y a pas d'autres fichier .htaccess, je l'ai est supprimer pour être sur de ne pas avoir de soucis.

    Pour les liens (avec le fr), j'ai suivi le tutoriel de Pierre-Emmanuel Fringant : http://www.formation-cakephp.com/41/...ingue-18n-l10n

    La je suis comme toi, je ne sais pas l'origine du problème

    En tout cas, merci pour ton aide, ça ma bien fait avancer et ma permis de corriger d'autre problème.

    Amicalement,
    Steven

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Je viens d'effectuer une demande auprès de l'hébergeur pour avoir une copie des logs apache pour l'hébergement de mon client.

    Espérons que je vais recevoir une meilleur réponse que la 1er fois

  13. #13
    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
    Dans ce cas, on doit partir de nouveau sur une boucle infinie car avec le fr, si c'est un répertoire "virtuel", le fichier cible n'existe pas. En cible, une URL /new/fr/toto.html doit être transcrite dans quelle autre URL ? Je pense qu'il y a un index.php qui doit tomber au milieu mais je ne suis pas sûr.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Je pense également pour la boucle infini car c'est bien un répertoire virtuel.
    C'est juste le code de la langue qui est ajouté au début de chaque url.

    L'url /new/fr/toto.html est transmise au fichier index.php qui lui va exécuté le contenu du bootstrap.php pour supprimer le code de la langue. Voici le code php qui permet ceci :

    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
    <?php
    // Langues acceptées
    $languages = array(
    	'fr' => 'fre',
    	'en' => 'eng',
            'es' => 'spa'
    );
     
    // Français par défaut
    $langCode = 'fr';
    $language = 'fre';
     
    // Analyse de l'URL
    if(!empty($_GET['url']))
    {
        if(strpos($_GET['url'], '/') !== false)
            $langFromUrl = substr($_GET['url'], 0, strpos($_GET['url'], '/'));
        else
            $langFromUrl = $_GET['url'];
     
        // Code langue accepté ?
        if(isset($languages[$langFromUrl]))
        {
            $langCode = $langFromUrl;
            $language = $languages[$langCode];
            // On enlève le code langue et le slash au début de l'URL
            // avant qu'elle ne soit transmise au Router
            if(strlen($_GET['url']) > strlen($langFromUrl))
                $_GET['url'] = substr($_GET['url'], strlen($langFromUrl));
            else
                $_GET['url'] = '/';
        }
    }
    ?>
    J'ai essayer de rajouter une règle de réécriture dans le htaccess juste en dessous des conditions :
    en 1er celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule (.*) index.php?/$1 [L]
    puis celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule (.*) index.php?$1 [L]
    et enfin celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule (.*) index.php/$1 [L]
    mais rien ne marche

    j'espère que j'ai été assez clair lol

  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
    Il faut repartir sur l'idée de la dernière et fusionner avec ce qui existe déjà :
    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
    AddType application/x-httpd-php5 .php
     
    RewriteEngine on
    RewriteBase /
    RewriteRule ^$ app/webroot/ [L]
    RewriteCond %{REQUEST_URI} !app/webroot
    RewriteRule (.*) app/webroot/index.php/$1 [L]
     
    RewriteCond %{HTTP_HOST} !^www\.domaine\.tld[NC]
    RewriteRule (.*) http://www.domaine.tld/$1 [QSA,R=301,L] 
     
    #RedirectPermanent /produit.php http://www.domaine.tld/fr/1-produit-creme.html
    #RedirectPermanent /bebefits.php http://www.domaine.tld/fr/2-bienfaits-creme.html
    #RedirectPermanent /application-advice.php http://www.domaine.tld/fr/3-conseils-dapplications.html
    #RedirectPermanent /sales.php http://www.domaine.tld/fr/4-achat-creme.html
    #RedirectPermanent /about-our-product.php http://www.domaine.tld/fr/5-plus-dinfos.html
    #RedirectPermanent /partenaire.php http://www.domaine.tld/fr/7-liens.html
    #RedirectPermanent /about-our-product.php?lg=es http://www.domaine.tld/es/5-mas-infos.html
    #RedirectPermanent /about-our-product.php?lg=en http://www.domaine.tld/en/5-about-our-product.html
    #RedirectPermanent /?lg=es http://www.domaine.tld/es/
    #RedirectPermanent /?lg=en http://www.domaine.tld/en/
    Si ça ne passe pas, on peut modifier la condition :
    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
    AddType application/x-httpd-php5 .php
     
    RewriteEngine on
    RewriteBase /
    RewriteRule ^$ app/webroot/ [L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) app/webroot/index.php/$1 [L]
     
    RewriteCond %{HTTP_HOST} !^www\.domaine\.tld[NC]
    RewriteRule (.*) http://www.domaine.tld/$1 [QSA,R=301,L] 
     
    #RedirectPermanent /produit.php http://www.domaine.tld/fr/1-produit-creme.html
    #RedirectPermanent /bebefits.php http://www.domaine.tld/fr/2-bienfaits-creme.html
    #RedirectPermanent /application-advice.php http://www.domaine.tld/fr/3-conseils-dapplications.html
    #RedirectPermanent /sales.php http://www.domaine.tld/fr/4-achat-creme.html
    #RedirectPermanent /about-our-product.php http://www.domaine.tld/fr/5-plus-dinfos.html
    #RedirectPermanent /partenaire.php http://www.domaine.tld/fr/7-liens.html
    #RedirectPermanent /about-our-product.php?lg=es http://www.domaine.tld/es/5-mas-infos.html
    #RedirectPermanent /about-our-product.php?lg=en http://www.domaine.tld/en/5-about-our-product.html
    #RedirectPermanent /?lg=es http://www.domaine.tld/es/
    #RedirectPermanent /?lg=en http://www.domaine.tld/en/

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Salut _Mac_,

    Je pense que je me suis mal expliqué, le fichier index.php qui traite les requêtes MVC ce trouve, non pas dans app/webroot/index.php, mais directement à la racine du serveur (ou dans mon cas dans /new/index.php).

    Voici la structure (plus complète) de mon application cakephp :


    Comme tu peux le voir, le fichier index (à la racine) et juste à coté de mon fichier htaccess.

    J'ai testé tes deux proposition, en modifiant le chemin vers le fichier index (j'ai même testé tels quel) mais ça ne change rien au niveau des liens, j'ai toujours une erreur 500.
    Par contre avec cette deux conditions, mon design ne s'affiche plus du tout lol.
    J'ai laissé le deuxième fichier htaccess en place pour que tu puisse constaté par toi même.

    Encore merci,
    Steven

  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
    Je suis perdu. Tu peux donner tes 2 .htaccess ? A quoi sert le index.php dans le répertoire webroot ?

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Salut _Mac_,
    Cela ma bien cassé les c*****, j'ai laché l'affaire surtout que la sav de online.net mets en moyenne 5jours pour répondre avec des réponses inutiles en plus. J'ai déposé le site sur un hébergement ovh, j'ai fait pointé le nom de domaine sur les serveurs ovh et miracle tout fonctionne sans aucun problème.
    Si tu veux a quoi ressemble le site : http://www.petitgris.fr

    Pour ta question, le fichier index.php dans le webroot est le dispacher (celui qui traite les requêtes) mais il faut d'abord charger le fichier à la racine qui lui charge les librairies de cakephp.

    En tout cas, je te merci de ton aide c t super cool de ta part, si un jour tu as besoin d'aide surtout n'hésite pas à me contacter ce sera avec plaisir

    Encore merci,
    Steven

    PS: A toute les personnes qui recherche une solution d'hébergement fiable, performante avec un sav réactif, n'allez surtout pas chez online.net c'est tout le contraire

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

Discussions similaires

  1. .htaccess qui ne passe pas
    Par sheira dans le forum Apache
    Réponses: 1
    Dernier message: 05/02/2013, 15h35
  2. Réponses: 5
    Dernier message: 20/04/2010, 10h20
  3. Réponses: 13
    Dernier message: 15/06/2009, 14h55
  4. Requête qui ne passe pas
    Par TheBart dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/08/2005, 10h12
  5. HTACCESS qui ne fontionne pas...
    Par Raideman dans le forum Apache
    Réponses: 4
    Dernier message: 28/06/2005, 08h34

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