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 :

[.htaccess] Tout réécrire sauf


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Par défaut [.htaccess] Tout réécrire sauf
    Bonjour,

    Je me prend la tete pour faire un fichier htaccess qui redirige toute demande vers un fichier d'index (ré-écriture), y compris si le fichier existe sur le serveur, et sauf si l'url est une fichier .js, .png, .jpeg... Ça ne me parrait pas très compliqué, et pourtant...

    Voici ce que j'ai écrit, qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options FollowSymLinks
    RewriteEngine on
    RewriteRule ^.*[^(.png|.js|.jpg|.jpeg)]$ /site/index.php
    Le fichier est stocké dans le dossier "site".

    je ne sais pas trop a quoi sert la première ligne, mais la 2ème correspond pour moi à "tout ce qui ne se termine pas par .png ou .js ou...

    Ce qu'il se passe :
    • Si le fichier existe, alors il est envoyé (executé si php), en ignorant totalement la regle
    • Si le fichier n'existe pas alors la page est bien appelé
    • Ça ne marche pas si l'utilisateur demande un fichier d'un sous répertoire


    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
    Par défaut
    Dans un RewriteRule, tu ne peux pas vraiment faire de règle "négative" ("ce qui n'est pas X"). Dans ton cas, il faut que tu mettes ta condition dans un RewriteCond qui sais faire de la négation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Options FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !\.(png|js|jpg|jpeg)$
    RewriteRule .* /site/index.php

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Par défaut
    Merci pour ta réponse, mais ça ne marche pas

    J'ai une erreur 500.

    j'ai également essayer de mettre sur la dernière ligne, mais ça ne change rien.
    Je pense (mais après tout j'en sais rien) que le fait que "index.php" soit rewrite vers lui même peut provoquer une sorte de boucle infinie. Je vais essayer de rajouter une exception pour ce fichier.

    edit:
    ça venait bien de la : j'ai simplement remplacé la 3ème ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{REQUEST_URI} !(\.(png|js|css|jpg|jpeg))|(/site/index.php)$
    Le sujet est donc résolu.

    Merci encore !

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

Discussions similaires

  1. [.htaccess] Tout interdit sauf un sous-dossier
    Par Shimrra dans le forum Apache
    Réponses: 2
    Dernier message: 04/02/2013, 23h45
  2. Ajouter un fichier dans un Tar sans tout réécrire
    Par XSeb74 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 02/01/2012, 16h51
  3. [Htaccess] Tout restreindre sauf /
    Par jv2759 dans le forum Apache
    Réponses: 3
    Dernier message: 18/12/2007, 17h28
  4. Réponses: 4
    Dernier message: 08/08/2006, 12h47
  5. [RegEx] tout remplacer sauf ...
    Par prgasp77 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 14h26

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