Aller au contenu

Rediriger tout sauf un type d'url


Sujets conseillés

Bonjour,

Je cherche à rediriger toute adresse de subdomain.domain.com vers www.domaine.com, sauf si l'url est du type : subdomain.domain.com/any-page.htm

J'ai pensé à utiliser en tête de liste un RewriteRule matchant les urls se terminant par .htm , en utilisant le flag L pour stopper le matching.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain.domain.com [NC]
RewriteRule ^([^.]*).htm$ $1.htm [L]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
# rediriger domain.com vers www.domain.com
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [QSA,R=301,L]
# règles du Zend Framework
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Mais ça ne fonctionne pas, FF me donne le message :

"Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas."

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Il vaut mieux utiliser une RewriteCond pour ça. Si les .htm en question sont de "vrais" fichiers, une condition sur %{REQUEST_FILENAME} et -f par exemple devrait faire l'affaire.

Sinon tu peux faire quelque chose comme RewriteCond %{REQUEST_URI} !\.htm$ par exemple.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Il vaut mieux utiliser une RewriteCond pour ça. Si les .htm en question sont de "vrais" fichiers, une condition sur %{REQUEST_FILENAME} et -f par exemple devrait faire l'affaire.

Sinon tu peux faire quelque chose comme RewriteCond %{REQUEST_URI} !\.htm$ par exemple.

Jacques.

Merci pour ton aide.

Effectivement, ce ne sont pas de vrais fichiers, ce qui est avant ".htm" est un paramètre à passer un controleur.

Voici ce que j'ai essayé :


RewriteCond %{HTTP_HOST} ^sousdomaine\.domaine\.com [NC] #concerne le sous-domaine
RewriteCond %{REQUEST_URI} !^/(.*)\.htm$ #tout ce qui ne se termine pas par .htm
RewriteRule ^/(.*) http://www.domaine.com/$1 [L,R] # on dirige le tout vers www.domaine.com/etc...

# rediriger domaine.com vers www.domaine.com
RewriteCond %{HTTP_HOST} ^domaine\.com$ [NC]
RewriteRule ^(.*) http://www.domaine.com/$1 [QSA,R=301,L]

# Redirection vers index.php sauf fichiers
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Pour moi ça a l'air bon, mais la redirection ne s'effectue pas.

-http://sousdomaine.domaine.com/une-requete.htm => ne redirige pas, parfait ça fonctionne.

-http://sousdomaine.domaine.com/foo/bar => ne redirige pas vers -http://www.domaine.com/foo/bar :(

Lien vers le commentaire
Partager sur d’autres sites

Bon en fait, il semble que les conditions et la règle ne soient même pas matchées.

J'ai essayé ça :


RewriteCond %{HTTP_HOST} ^sousdomaine\.domaine\.com [NC]
RewriteRule ^/(.*) http://www.google.com/?q=$1 [L,R]

pour le fun. Et aucune adresse n'est redirigée vers google. On dirait que la condition HTTP_HOST ne passe vraiment pas

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...