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 :

URL rewriting pour un générateur de sites (CMS)


Sujet :

Apache

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 19
    Points
    19
    Par défaut URL rewriting pour un générateur de sites (CMS)
    Bonjour,

    J'ai passé des heures sur ce forum mais je ne trouve pas de solution à mon problème.

    Je suis chez OVH mutualisé et je souhaite créer un générateur de sites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Options +FollowSymlinks
    RewriteEngine On
     
    # Page client "http://www.generateur.com/site/page.html"
    RewriteRule ^(.*)/(.*).html$ /index.php\?site=$1&page=$2 [L]
     
    # Page d'accueil client "http://www.generateur.com/site/"
    RewriteRule ^(.*)/ /index.php\?site=$1 [L]
    La page "index.php" s'affiche dans les 2 cas avec les variables récupérées "site" et "page", mais les css et js ne fonctionnent plus...
    http://www.generateur.com/css/style.css
    http://www.generateur.com/js/script.js

    J'ai essayé de mettre style.css et script.js à la racine mais ça ne marche toujours pas.

    Si quelqu'un a une idée, je l'en remercie 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
    A priori c'est un problème de liens relatifs : le navigateur voit l'URL http://www.generateur.com/site/page.html, donc quand on lui dit <script src="scripts/toto.js">, il pense que scripts/toto.js se trouve dans le répertoire site : http://www.generateur.com/site/scripts/toto.js. Or ce n'est pas le cas. Ce qu'il faut c'est modifier ton code HTML pour qu'il contient des liens relatifs à la racine du site pour forcer le vrai chemin des JS et CSS : <script src="/scripts/toto.js">.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Tout d'abord, merci pour ta réponse.

    Je pense également que c'est un problème de chemin relatif. J'ai essayé ta méthode, sans succès. J'ai essayé aussi "../css/style.css" devant les css et js pour revenir un niveau en arrière mais rien n'y fait...

    Chez OVH mutualisé, quand tu rentres l'accès ftp, il y a un dossier "www" à la racine dans lequel tu mets ton site (c'est donc la racine du site, accessible à www.monsite.com). Peut-être que c'est ce niveau qui provoque le problème...
    J'ai essayé sans succès, avant les css : "/www/css/style.css", "www/css/style.css", "../www/css/style.css".

    Une autre idée ? J'ai l'impression que c'est tout bête pourtant.

  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
    Ah oui, j'ai vu le problème : c'est la seconde règle qui est trop générique : le filtre ^(.*)/ matche n'importe quelle URL qui comporte un sous-dossier, en particulier /css/style.css. Il faut la "personnaliser" un peu plus pour qu'elle ne matche que ce qu'elle doit doit matcher : ^(.*)/$ par exemple, mais de même, c'est trop générique comme règle : /tototo/trtrt/sfsdf/ activera cette règle, pas seulement /tototo.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Une piste peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # Page client "http://www.generateur.com/site/page.html"
    RewriteRule ^(.*)/(.*)\.html$ http://%{HTTP_HOST}/index.php?site=$1&page=$2 [L]
     
    # Page d'accueil client "http://www.generateur.com/site/"
    RewriteRule ^(.*)/$ http://%{HTTP_HOST}/index.php?site=$1 [L]
    Ca fait la redirection en m'affichant correctement les css et js, mais l'url redirigée apparait dans le navigateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.generateur.com/index.php?site=site&page=page
    au lieu de rester à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.generateur.com/site/page.html

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    J'ai combiné tes 2 réponses et ça marche !

    Il faut mettre "/" devant les css, js, images...
    Voilà le code si ça peut aider certains :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # Page client "http://www.generateur.com/site/page.html"
    RewriteRule ^(.*)/(.*)\.html$ /index.php?site=$1&page=$2 [L]
     
    # Page d'accueil client "http://www.generateur.com/site/"
    RewriteRule ^(.*)/$ /index.php?site=$1 [L]
    Un énorme merci car ça faisait 3/4 jours que je me prenais la tête.

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

Discussions similaires

  1. URL Rewriting pour site multi-langue (?lang=fr|en)
    Par Blabla72 dans le forum Apache
    Réponses: 3
    Dernier message: 22/06/2015, 17h16
  2. Réponses: 6
    Dernier message: 13/12/2014, 09h29
  3. Réponses: 6
    Dernier message: 12/12/2010, 02h12
  4. URL rewriting pour une meilleure visibilité
    Par Yoteco dans le forum MVC
    Réponses: 13
    Dernier message: 30/08/2007, 21h50

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