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 :

Interdire la réécriture pour les fichiers js et css


Sujet :

Apache

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Interdire la réécriture pour les fichiers js et css
    Bonjour,
    après de nombreuse recherches et tentatives d'adaptations, je n'arrive pas à ne pas appliquer les règles de réécriture de mes fichiers .php aux fichier .css et .js.

    J'utilise des règles de réécriture en slash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteRule ^(.*)/(.*)/(.*)\.html$ index.php?pg=$1&se=$2&ru=$3 [L]
    RewriteRule ^(.*)/(.*)\.html$ index.php?pg=$1&se=$2 [L]
    RewriteRule ^(.*)\.html$ index.php?pg=$1 [L]
    pour avoir des urls du style www.monsite.com/section1.html

    Le problème est que lorsque j'ai une URL composée d'au moins deux paramètres du style [I]http://www.monsite.com/section1/rubr...sentation.html[/I, mes fichiers .js et .css sont recherchés dans http://www.monsite.com/section1/rubr...css/styles.css et www.monsite.com/section1/rubrique2/js/scripts.js.

    Je tente donc actuellement d'interdire la réécriture pour ces fichiers là pour qu'ils soient chargés depuis la racine du serveur, malheureusement sans succès...
    Les règles que je tentais jusque là sont déclarées en premières juste après le RewriteEngine on :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteEngine on
     
    RewriteRule .+\.(css|js)$  -  [L]
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteEngine on
     
    RewriteRule ^css/(.*)\.css$  -  [L]
    Rien à faire cela ne fonctionne pas... Quelqu'un aurait-il une idée de mon /mes erreurs où éventuellement une parade à ce genres d'effets de bord de la réécriture d'url ?

    Merci d'avance,
    jérémy

  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
    Par défaut
    C'est pas un problème de réécriture (à plus forte raison que tes règles ne sont valables que pour les .html, pas les .js ou .css), il faut simplement mettre des URL relatives à la racine du site dans tes pages HTML pour les JS et CSS, c'est-à-dire mettre un / devant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="/js/scripts.js">

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Merci,
    en effet, cela ne relève pas de la réécriture, je n'y avait pas pensé ! je me suis donc acharné pour pas grand chose
    Toutefois j'en profite pour vous poser une question à laquelle j'ai du mal à trouver une réponse...
    Est-il possible de faire cohabiter des règles de réécritures de formatages différents amenant au même résultat.
    Je m'explique, actuellement je récupère les paramètres avec ce formatage :
    index.php?pg=page3&se=section1&ru=rubrique2
    résultat d'une URL de ce type :

    www.monsite.com/page3/section1/rubrique2.html

    Je voudrait que l'utilisateur puisse aussi accéder en tapant :
    www.monsite.com/page3/section1/rubrique2/ (remplacement du .html par un slash)

    mais aussi en tapant :
    www.monsite.com/page3/section1/rubrique2 (sans slash en fin d'URL)

    J'ai réussi à régler le problème pour les URLs terminant par un slash :

    www.monsite.com/page3/section1/rubrique2/

    j'utilise les règles suivantes, situées en dessous de mes règles de réécriture de .html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    RewriteRule ^(.*)/(.*)/(.*)/$ index.php?pg=$1&se=$2&ru=$3 [L]
    RewriteRule ^(.*)/(.*)/$ index.php?pg=$1&se=$2 [L]
    RewriteRule ^(.*)/$ index.php?pg=$1 [L]
    Pour les URLs sans slash de type www.monsite.com/page3/section1/rubrique2
    J'essaye tout simplement de retirer mes slashs finaux, mais malheureusement, cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #RewriteRule ^(.*)/(.*)/(.*)$ index.php?pg=$1&se=$2&ru=$3 [L]
    #RewriteRule ^(.*)/(.*)$ index.php?pg=$1&se=$2 [L]
    #RewriteRule ^(.*)$ index.php?pg=$1 [L]
    Est-il possible de faire cohabiter ces trois formats de réécriture ?
    Si oui, et c'est ce que je suppose... je ne vois pas bien ce qui cloche dans mes règles (celles sans les slashs finaux).
    Qu'en pensez-vous ?

    Merci encore,

    jérémy

  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
    Par défaut
    Le problème de tes règles sans / finales, c'est qu'elles sont valables également pour celles avec / et plus généralement même pour les .html ou .jpg, .css, etc., à cause des .* qui matchent tout.

    A essayer mais je verrais un groupe de 2 règles : tes règles en .html, puis des règles pour les URL avec ou sans / final qui ne sont déclanchées que si elles ne correspondent pas à un fichier (c'est pour laisser les .jpg fonctionner). Ca donnerait ceci (à tester, je ne l'ai pas fait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # Pour les URL en .html
    RewriteRule ^(.*)/(.*)/(.*)\.html$ index.php?pg=$1&se=$2&ru=$3 [L]
    RewriteRule ^(.*)/(.*)\.html$ index.php?pg=$1&se=$2 [L]
    RewriteRule ^(.*)\.html$ index.php?pg=$1 [L]
     
    # Pour les URL sans .html
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)/(.*)/([^/]+)/?$ index.php?pg=$1&se=$2&ru=$3 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)/([^/]+)/?$ index.php?pg=$1&se=$2 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/?$ index.php?pg=$1 [L]

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Yes, ca fonctionne, merci beaucoup je ne pensais pas y arriver !
    Les RegEx c'est quand même compliqué...
    A bientôt, jérémy

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

Discussions similaires

  1. SelectDirectory pour les fichiers.
    Par heider dans le forum Delphi
    Réponses: 2
    Dernier message: 20/05/2006, 01h12
  2. Gestionnaire d'évènements pour les fichiers sur disque
    Par chourmo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/03/2006, 16h18
  3. [ASA] Quelle extention pour les fichiers de données?
    Par Goldorak2 dans le forum SQL Anywhere
    Réponses: 2
    Dernier message: 07/12/2005, 09h28
  4. [CSV] Détecter le séparateur pour les fichiers CSV
    Par JavaEli dans le forum Langage
    Réponses: 1
    Dernier message: 30/11/2005, 23h42
  5. [Excel] séparateur pour les fichiers csv
    Par drinkmilk dans le forum Excel
    Réponses: 2
    Dernier message: 27/08/2005, 14h21

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