We need any
.org
domain should redirect to.net
domain documentroot
Eu suponho que você quer dizer "reescrever", ao contrário de "redirecionamento" externo , como o código da sua pergunta? (Você também inverteu a direção da reescrita requerida, conforme declarado na sua pergunta, mas, de qualquer forma, vou com o que você declarou nos comentários ... .org
para '.net)
Isso pressupõe que você tenha somente TLDs de nível único, conforme mencionado em seu código (por exemplo, .net
, .me
, .info
, .org
, etc) e não "DPNs" de vários níveis, como .co.uk
.
RewriteCond %{HTTP_HOST} !^[^.]+\.abc\.net [NC] RewriteCond %{HTTP_HOST} !^[^.]+\.example\.me [NC] RewriteCond %{HTTP_HOST} !^[^.]+\.mysite\.info [NC] RewriteCond %{HTTP_HOST} !^[^.]+\.xyz\.org [NC] RewriteCond %{HTTP_HOST} !\.internal$ [NC] RewriteCond %{REQUEST_URI} !^/collateral/ [NC] RewriteRule ^(.+) /var/www/domains/%{HTTP_HOST}/httpdocs/%{HTTP_HOST}/$1
Tente algo como o seguinte:
# If any of these domains are requested then stop
RewriteCond %{HTTP_HOST} ^[^.]+\.abc\.net [NC,OR]
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.me [NC,OR]
RewriteCond %{HTTP_HOST} ^[^.]+\.mysite\.info [NC,OR]
RewriteCond %{HTTP_HOST} ^[^.]+\.xyz\.org [NC,OR]
RewriteCond %{HTTP_HOST} \.internal$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/collateral/ [NC]
RewriteRule ^ - [L]
# Split the requested host into HOSTNAME + TLD (env vars)
RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+)\.([^.]+)
RewriteRule ^ - [E=HOSTNAME:%1,E=TLD:%2]
# Change TLD "org" to "net"
RewriteCond %{ENV:TLD} =org [NC]
RewriteRule ^ - [E=TLD:net]
RewriteRule (.+) /var/www/domains/%{ENV:HOSTNAME}.%{ENV:TLD}/httpdocs/%{ENV:HOSTNAME}.%{ENV:TLD}/$1 [L]
O primeiro bloco de diretivas reverte suas condições atuais. ie. Ele diz que se a solicitação for para qualquer um desses "domínios", pare o processamento, em vez de ... apenas reescreva quando a solicitação não não corresponde a nenhum desses "domínios". Isso torna as regras a seguir mais simples, já que agora sabemos que o host solicitado é aquele que queremos reescrever, portanto, não precisamos colocar o código com mais condições.
Em seguida, dividimos o HTTP_HOST
solicitado no hostname (subdomínio + domínio) e o tld apenas. E armazene-os em duas variáveis de ambiente: HOSTNAME
e TLD
, respectivamente.
Em seguida, testamos o TLD
env var e alteramos isso, se necessário (ou seja, org
to net
).
E, por último, há uma reconfiguração incondicional para o subdiretório e a raiz do documento apropriado (usando o env vars atribuído acima), como em seu código. Note que você declarou apenas "document root" em sua descrição, mas seu código também inclui um subdiretório com o mesmo nome, então incluímos o subdiretório também.
Isto assume que as diretivas mod_rewrite declaradas em sua pergunta estão completas. ie. Não há outras diretivas dependentes mais abaixo na configuração? Eu adicionei o sinalizador L
para uma boa medida.