У меня есть набор требований для mod_rewrite, который ломает мне голову. Любые подсказки / указатели будут оценены:
домены:
www.domain-europe.com
www.domain.com
Я могу заставить работать любые 1 и 3 или 2 и 3 из них, но не все три одновременно.
Вот одна из многих итераций, которые я пробовал:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain-europe\.com$ [NC]
RewriteRule (.*) http://www.domain.com/europe [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.domain-europe\.com/ [NC]
RewriteRule (.*) http://www.domain.com$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.domain.com/$1 [L,R]
Ваши условия перезаписи совпадают только на хосте HTTP, а не на uri запроса - и ваше правило перезаписи (. *) Соответствует всему ...
RewriteCond %{HTTP_HOST} ^www\.domain-europe\.com$ [NC]
RewriteRule (.*) http://www.domain.com/europe [R=301,L]
будет соответствовать в любое время, когда хост будет www.domain-europe.com, независимо от того, запрашивается ли / или запрашивается /foo/bar/virus.exe.
Вместо этого, возможно, попробуйте что-нибудь вроде:
RewriteCond %{HTTP_HOST} ^(www\.)?domain-europe\.com$ [NC]
RewriteRule ^/$ http://www.domain.com/europe [R=301,L]
RewriteRule ^/(.+)$ http://www.domain.com$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^/(.*) http://www.domain.com/$1 [L,R]
Возможно, вам все равно придется его немного подправить. Я немного забыл о точной семантике, но это должно, по крайней мере, указать вам правильное направление.
HTH