2013-07-19 2 views
2

Я пытаюсь выяснить, как сделать перенаправление с помощью mod_rewrite в новый домен, который будет включать перенаправление поддоменов подстановочных знаков.Переадресация поддомена подстановочных знаков с использованием mod_rewrite

Я надеюсь на такой результат:

domain1.com      -> domain2.com 
domain1.com/foo/bar?baz=quux  -> domain2.com/foo/bar?baz=quux 
www.domain1.com     -> www.domain2.com 
www.domain1.com/foo/bar?baz=quux -> www.domain2.com/foo/bar?baz=quux 
sub.domain1.com     -> sub.domain2.com 
sub.domain1.com/foo/bar?baz=quux -> sub.domain2.com/foo/bar?baz=quux 
*.domain1.com     -> *.domain2.com 
*.domain1.com/foo/bar?baz=quux -> *.domain2.com/foo/bar?baz=quux 

Я пытался что-то вроде этого:

RewriteCond %{HTTP_HOST} !^(.+\.)?domain2.com$ [NC] 
RewriteRule^http://%1domain2.com%{REQUEST_URI} [R=301,L] 

Но %1, которую я надеялся, чтобы обратиться к дополнительной подобласти пойманной в RewriteCond является не доведено до полностью отброшено, поэтому любые запросы заканчиваются перенаправлением на http://domain2.com%{REQUEST_URI}.

Что я делаю неправильно?

ответ

5

Возможно ли, что вы провалились и перехватили другой RewriteCond в другом месте? Мне кажется, что RewriteCond в вашем примере никогда не будет соответствовать HTTP_HOST, который заканчивается в домене1.com из-за наличия префикса отрицания !.

Эта небольшая модификация, кажется, работает так, как вы хотите:

RewriteCond %{HTTP_HOST} ^(.+\.)?domain1.com$ [NC] 
RewriteRule^http://%1domain2.com%{REQUEST_URI} [R=301,L] 
Смежные вопросы