Jump to content
Sign in to follow this  
supertino7

Rediriger tout sauf un type d'url

Rate this topic

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 :(

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...