Reescreva o HOST sem redirecionar para o nome do host reescrito, isso é possível?

3

Eu só tenho um host virtual disponível com meu provedor de serviços. A estrutura de pastas é semelhante a esta:

  • domínios

    • primarydomain.ext

      • stat
      • www
      • secundário (< - esta é a pasta para "secondary.primarydomain.ext")

Eu tenho o domínio "primarydomain.ext" registrado e funcionando. Eu tenho um segundo domínio "secondary.ext" registrado em outro lugar, e apontando para o mesmo servidor web. O provedor de serviços permitiu isso e agora ele age como um alias para primarydomain.ext. Eu quero usar mod_rewrite para internamente reescrever "secondary.ext" para "secondary.primarydomain.ext" e processá-lo assim (com a pasta chamada secundária como a raiz).

O URL no navegador deve permanecer "secondary.ext"! A solução que tenho funciona, ele armazena o seguinte em um arquivo .htaccess localizado dentro da pasta "primarydomain.ext", mas atualiza a URL do navegador para "secondary.primarydomain.ext":

RewriteEngine On 

RewriteCond %{HTTP_HOST} secondary.ext$ [NC]
RewriteRule ^(.*)$ http://secondary.primarydomain.ext [L]

Como posso corrigir isso para que o URL do navegador não seja atualizado ou qualquer outra solução me dê o efeito desejado?

(como nota: meu provedor não é capaz (não quer) de criar um novo host virtual para domínios que não são registrados por eles, então eles me indicaram essa solução, mas não oferecem suporte a ela.)

    
por Christophe 28.01.2011 / 00:31

2 respostas

4

A resposta é não tentar alterar o HOST, mas alterar o caminho usado para localizar arquivos localmente.

RewriteCond %{HTTP_HOST} secondary.ext$ [NC]
RewriteRule ^(.*)$ /domains/primarydomain.ext/secondary$1 [L]

Editar Se você estiver obtendo um loop infinito, adicione outra condição para excluir solicitações já existentes na pasta secundária após a condição HTTP_HOST e antes da Regra:

RewriteCond %{REQUEST_URI} !^/secondary/.*
    
por 28.01.2011 / 00:55
1

Alterar o host sempre fará com que o Apache crie um redirecionamento externo.

Absolute URL
If an absolute URL is specified, mod_rewrite checks to see whether the hostname matches the current host. If it does, the scheme and hostname are stripped out and the resulting path is treated as a URL-path. Otherwise, an external redirect is performed for the given URL. To force an external redirect back to the current host, see the [R] flag below.

Veja o link

    
por 29.01.2011 / 04:14