Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2010, 20h16   #1
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut Redirection .htaccess : difficulté sur une condition

Bonjour à tous,

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

Code :
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 21h46   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 268
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 268
Points : 8 550
Points : 8 550
Rien de plus simple : tu écris en terme mod_rewrite ce que tu viens de dire :
Code :
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]
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 22h04   #3
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 11h53   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 268
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 268
Points : 8 550
Points : 8 550
Tu peux donner le contenu complet du .htaccess ? Tu as vidé le cache de ton navigateur avant de tester ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 14h17   #5
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Oui j'ai bien vidé le cache, pas de soucis à ce niveau.

Voila mon .htacces au complet :

Code :
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]
  Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 15h12   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 268
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 268
Points : 8 550
Points : 8 550
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 ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 15h18   #7
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 :
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h03   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 268
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 268
Points : 8 550
Points : 8 550
Oui, ça j'ai bien compris : ma demande concerne ce problème-là, quand tu retires index.html.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h14   #9
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 21h13   #10
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 268
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 268
Points : 8 550
Points : 8 550
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}.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 21h15   #11
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 22h17   #12
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 268
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 268
Points : 8 550
Points : 8 550
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 :
1
2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . http://monsite.net/ [R,L]
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 13h53   #13
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Ca marche du tonnerre
Merci beaucoup.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Enlever Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h43.


 
 
 
 
Partenaires

Hébergement Web