Пренасочване на поддомейни със заместващи символи чрез 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}.

какво правя грешно


person Michal M    schedule 19.07.2013    source източник


Отговори (1)


Възможно ли е да се провалите и да хванете друг RewriteCond другаде? Изглежда ми, че RewriteCond във вашия пример никога няма да съвпадне с HTTP_HOST, който завършва на domain1.com поради наличието на префикса за отрицание !.

Тази лека модификация изглежда работи така, както искате:

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