mod_rewrite nome de host exato corresponde a várias condições

2

Eu tenho um conjunto de requisitos para o mod_rewrite que está quebrando a minha cabeça. Quaisquer sugestões / ponteiros seriam apreciados:

domínios:

www.domain-europe.com
www.domain.com
  1. pedidos para www.domain-europe.com devem ser redirecionados para www.domain.com/europe
  2. pedidos para www.domain-europe.com/someurl devem ser redirecionados para www.domain.com/someurl
  3. qualquer outro pedido enviado ao servidor que não seja www.domain-europe.com ou www.domain.com deve ser definido como www.domain.com

Eu posso fazer qualquer 1 e 3 ou 2 e 3 destes trabalhos, mas não todos os três ao mesmo tempo.

Aqui está uma das muitas iterações que tentei:

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]
    
por mdekkers 29.07.2014 / 07:17

1 resposta

1

Suas condições de reescrita são apenas correspondentes no host HTTP, não no pedido uri - e sua regra de reescrita (. *) corresponde a tudo ...

RewriteCond %{HTTP_HOST}    ^www\.domain-europe\.com$ [NC]
RewriteRule (.*) http://www.domain.com/europe [R=301,L]

corresponderá a qualquer momento que o host for www.domain-europe.com, independentemente de ser / solicitado ou /foo/bar/virus.exe ser solicitado.

Em vez disso, talvez tente algo mais como:

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]

Você ainda pode ter que ajustar um pouco. Estou um pouco enferrujado na semântica exata - mas isso deve pelo menos apontar você na direção certa.

HTH

    
por 29.07.2014 / 08:09