Aller au contenu
supertino7

Rediriger tout sauf un type d'url

Noter ce sujet :

Recommended Posts

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

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
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 :(

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Et sans le '/' de début de la RewriteRule, tu as essayé?

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×