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 .htaccess : difficulté sur une condition


Sujet :

Apache

  1. #1
    Invité(e)
    Invité(e)
    Par défaut Redirection .htaccess : difficulté sur une condition
    Bonjour à tous,

    Voici mon fichier .htaccess dans mon répertoire /www :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^monsite.net$ [NC]
    RewriteRule ^(.*)$ http://monsite.net/$1 [L,R=301]
     
    Options -Indexes
    J'ai réussi à faire en sorte que si l'utilisateur entre l'adresse "www.monsite.net", il soit redirigé vers "monsite.net".

    Sur mon site, je n'ai qu'une seule page (index.html). J'aimerai que si l'utilisateur entre une adresse qui n'existe pas (par exemple "monsite.net/blabla/" ou "monsite.net/blabla.html") qu'il soit redirigé vers ma page unique.

    J'ai fais quelques tests et recherches sur Google, mais je n'ai pas réussi à concevoir cette fonction.

    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
    Rien de plus simple : tu écris en terme mod_rewrite ce que tu viens de dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Si on demande un fichier qui n'existe pas
    RewriteCond %{REQUEST_FILENAME} !-f
    # Alors on redirige
    RewriteRule .* http://monsite.net/index.html [R,L]

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Merci pour ta réponse. Cela fonctionne, mais mon adresse devient "http://monsite.net/index.html", or j'aimerai qu'elle reste de ce type "http://monsite.net".

    Je me suis dis qu'en supprimant la partie en gras de cette ligne tout irait bien :
    Mais j'obtiens une erreur qui m'indique que la page n'est pas correctement rédigée.

  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
    Tu peux donner le contenu complet du .htaccess ? Tu as vidé le cache de ton navigateur avant de tester ?

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Oui j'ai bien vidé le cache, pas de soucis à ce niveau.

    Voila mon .htacces au complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options -Indexes
     
    RewriteEngine On
     
    # Www to no-www
    RewriteCond %{HTTP_HOST} !^monsite.net$ [NC]
    RewriteRule ^(.*)$ http://monsite.net/$1 [L,R=301]
     
    # If file doesn't exist
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* http://monsite.net/index.html [R,L]

  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
    Par défaut
    Honnêtement, je ne vois pas quel est le problème. Quand tu as ce message d'erreur, tu as quelle URL dans le navigateur ?

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Tel qu'il est dans mon post précédent, cela fonctionne. Mais comme je te l'ai dit un peu plus haut, je souhaiterai faire en sorte que le "index.html" n'apparaisse pas dans la barre d'adresse.

    Donc j'ai essayé en supprimant le "index.html" de la dernière ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options -Indexes
     
    RewriteEngine On
     
    # Www to no-www
    RewriteCond %{HTTP_HOST} !^monsite.net$ [NC]
    RewriteRule ^(.*)$ http://monsite.net/$1 [L,R=301]
     
    # If file doesn't exist
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* http://monsite.net/ [R,L]
    Mais avec cette modification, il y a une erreur.

  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
    Par défaut
    Oui, ça j'ai bien compris : ma demande concerne ce problème-là, quand tu retires index.html.

  9. #9
    Invité(e)
    Invité(e)
    Par défaut
    OK, désolé.

    Donc, avec ma modification, si je rentre l'URL "http://monsite.net" ou "http://www.monsite.net" j'ai une erreur de redirection.

    Mais si je rentre l'URL "http://monsite.net/index.html" ou "http://www.monsite.net/index.html" cela fonctionne.

  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
    Par défaut
    Citation Envoyé par G.B.292 Voir le message
    Donc, avec ma modification, si je rentre l'URL "http://monsite.net" ou "http://www.monsite.net" j'ai une erreur de redirection.
    Oui mais dans ce cas, quelle est l'URL affichée dans la barre d'adresse de Firefox ?

    A tout hasard, essaie avec %{SCRIPT_FILENAME} à la place de %{REQUEST_FILENAME}.

  11. #11
    Invité(e)
    Invité(e)
    Par défaut
    Elle ne change pas. Par exemple, si je rentre "http://monsite.net", ça mouline quelques secondes, puis m'affiche l'erreur, et l'URL est toujours "http://monsite.net".

    EDIT : J'ai essayé avec %{SCRIPT_FILENAME}, mais aucun changement.

  12. #12
    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
    Très étrange. La condition ne marche pas du tout. On va modifier légèrement la RewriteRule : on va retirer l'astérisque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . http://monsite.net/ [R,L]

  13. #13
    Invité(e)
    Invité(e)
    Par défaut
    Ca marche du tonnerre
    Merci beaucoup.

Discussions similaires

  1. Difficulté sur une jointure(?)
    Par qi130 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/09/2007, 18h35
  2. Recordset: Pb sur une condition (= Null)
    Par sebastien_oasis dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/05/2007, 10h37
  3. [Requête] Explication sur une condition dans une Requête
    Par jimmymatrix dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/05/2007, 14h34
  4. Question sur une condition d'un exemple de la FAQ
    Par Bleys dans le forum Delphi
    Réponses: 3
    Dernier message: 08/08/2006, 12h43
  5. problème sur une condition if
    Par boss_gama dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/07/2006, 12h04

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