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 :

Redirection php et htaccess


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut Redirection php et htaccess
    Bonjour,

    Dans le fichier .htaccess à la racine de mon site j'ai la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)\.html$ $1.php [QSA,L]
    Le problème c'est que dans mon répertoire "galeries" pour la galerie d'images gérée par jAlbum il faut que j'atteigne le fichier index.html et donc il ne faut pas rediriger vers le php qui n'existe pas!

    Ma solution c'est de placer un .htaccess dans le répertoire "galeries" qui est identique à celui à la racine du site, mis à part qu'il n'y a plus la redirection ci-dessus.

    Malheureusement jAlbum quand il crée l'album statique et qu'il l'envoie sur le serveur, il en profite pour supprimer mon fichier .htaccess dans le dossier "galeries". Donc il fait un grand nettoyage avant de placer ses fichiers.

    Le site doit être géré par une personne qui n'y connait rien en informatique. Comment faire en sorte que la redirection html -> php ne se fasse pas? En indiquant une commande spéciale sur le .htaccess à la racine du site et qui s'appliquerait uniquement au dossier "galeries"?

    Merci beaucoup

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut
    Définir au dessus du RewriteRule un RewriteCond avec une condition négative (via le signe '!') sur les chemins qui contiennent "/galeries/" devrait faire l'affaire.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteCond !^(.*)/galeries/(.*)
    RewriteRule ^(.*)\.html$ $1.php [QSA,L]
    (je n'ai pas vérifié la syntaxe sur un apache qui tourne)

    Pour info: plusieurs RewriteCond consécutifs sont liés par un "OR" booléen jusqu'à la prochaine règle (on peut empiler plusieurs exceptions au prochain RewriteRule de cette manière).

    Alternativement vous pouvez toujours remplacer la règle Apache par une redirection dans le header et/ou le javascript des fichiers html concernés.

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut
    Bonjour et merci de votre réponse. Le code que vous me donnez me génère une erreur 500. Pourtant c'est la solution qui m'intéresse car je ne peux pas agir directement sur les pages html ou js du dossier /galeries car ces fichiers sont regénérés automatiquement par un logiciel d'album photo. Mes modifications seraient automatiquement écrasées.

    D'autres idées? merci

  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
    Qui dit erreur 500 dit "je vais consulter les logs d'erreur d'Apache" (si elles sont accessibles, bien entendu). Dans le cas présent, le problème vient que la RewriteCond n'a qu'un seul paramètre alors qu'il lui en faut deux : le premier paramètre (qui manque) est la chaîne de caractères ou la variable sur laquelle faire le test et le second paramètre est le test. Là, il s'agit donc d'ajouter un premier paramètre. Vu le test, je dirais que c'est %{REQUEST_URI} qu'il faut mettre (c'est l'URL demandée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{REQUEST_URI} !^(.*)/galeries/(.*)
    Au passage, on peut simplifier le test, étant donné que les blocs entre parenthèses ne sont pas exploités.

    Donc au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !/galeries/
    RewriteRule ^(.*)\.html$ $1.php [QSA,L]
    Dernier élément : le code ci-dessus doit être placé dans le .htaccess à la racine du site (sous-entendu : il ne faut pas de .htaccess dans le répertoire galeries).

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut
    Merci beaucoup Mac, ça fonctionne et j'ai appris quelque chose grâce à tes explications Aussi je n'ai pas le réflexe d'aller dans les logs, je vais m'améliorer sur ce point.

  6. #6
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut
    Désolé pour l'information incomplète: je n'avais pas d'Apache sous la main, et merci à Max pour la correction.
    Je me corrige aussi sur un point: par défaut les RewriteCond d'une même règle sont reliées entre elles par un "AND" et non un "OR" booléen (si toute les conditions sont sur des tests négatifs se souvenir des lois de Morgan ...) .

    Le ou existe via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rewritecond param1 test1 [or]
    rewritecond param2 test2

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

Discussions similaires

  1. htaccess redirect php script
    Par pasqual dans le forum Apache
    Réponses: 1
    Dernier message: 30/10/2012, 13h56
  2. Réponses: 1
    Dernier message: 05/09/2006, 10h25
  3. Redirect Permanent dans Htaccess
    Par murrigane dans le forum Apache
    Réponses: 6
    Dernier message: 30/06/2006, 14h39
  4. [MySQL] Redirection PHP + variable
    Par baudmail dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 30/04/2006, 16h56
  5. Redirection PHP autre que dans un Reader
    Par gwen-al dans le forum Langage
    Réponses: 5
    Dernier message: 18/01/2006, 12h25

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