supertino7 Posté 4 Juin 2010 Posté 4 Juin 2010 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 OnRewriteCond %{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.comRewriteCond %{HTTP_HOST} ^domain.com$ [NC]RewriteRule ^(.*) http://www.domain.com/$1 [QSA,R=301,L]# règles du Zend FrameworkRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [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
jcaron Posté 4 Juin 2010 Posté 4 Juin 2010 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.
supertino7 Posté 4 Juin 2010 Auteur Posté 4 Juin 2010 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 .htmRewriteRule ^/(.*) http://www.domaine.com/$1 [L,R] # on dirige le tout vers www.domaine.com/etc...# rediriger domaine.com vers www.domaine.comRewriteCond %{HTTP_HOST} ^domaine\.com$ [NC]RewriteRule ^(.*) http://www.domaine.com/$1 [QSA,R=301,L]# Redirection vers index.php sauf fichiersRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [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
supertino7 Posté 4 Juin 2010 Auteur Posté 4 Juin 2010 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant