2010-07-20 6 views
0

J'ai deux domaines pointant vers le même hôte, disons example1.com et example2.com.comment rediriger FIRST et réécrire en utilisant mod_rewrite

J'ai déjà un redirect:

RewriteRule^([A-Za-z0-9 -] +)/$ page.php q = $ 1 [L]

pour attraper des choses comme Example1? .com/bonjour monde/=> example.com/page.php?q=hello-world

maintenant, je dois 3 conditions spécifiques à respecter:

1) example1.com/special/ => example2.com/special/ [SEULEMENT pour "spécial"]
2) example2.com/ => example2.com/special/
3) example2.com/anything-not-special/ => example1.com/anything-not-special/

Je peux obtenir que cela se produise, sauf que je veux exactement ce qui est dans la colonne de droite ici à afficher dans la barre d'URL. Au lieu de cela, je reçois: example2.com/special/ => example1.com/page.php?q=special

ce qui n'est pas idéal pour moi.

Toute aide appréciée, merci!

Répondre

1

Voir si cela fait ce que vous voulez:

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/page\.php 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} =example1.com/special/ [OR] 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} =example2.com/ 
RewriteRule ^.*$ http://example2.com/special/ [R=301,L] 

RewriteCond %{REQUEST_URI} !^/page\.php 
RewriteCond %{HTTP_HOST} =example2.com 
RewriteCond %{REQUEST_URI} !=/special/ 
RewriteRule ^.*$ http://example1.com%{REQUEST_URI} [R=301,L] 

RewriteRule ^([A-Za-z0-9-]+)/$ page.php?q=$1 
+0

Merci pour la réponse, mais il ne fonctionne pas. Il semble que le deuxième RewriteCond du deuxième bloc n'attrape pas correctement/special /. Aussi, il a encore résolu l'URL dans la barre d'URL à http://example1.com/page.php?q=special – Tom

+0

Oui, désolé. Supervision mineure de ma part. Voir si la version éditée fonctionne mieux. –

+0

example2.com/special/ est toujours en train de résoudre example1.com/page.php?q=special ce qui est étrange. Cela n'a pas de sens pour moi - votre code est solide et presque identique à ce que j'avais déjà fait. – Tom

Questions connexes