url reescreva para um domínio diferente

2

Eu tenho acesso a uma pasta em um servidor da Web no qual gostaria de colocar um arquivo .htaccess para que, quando um usuário visitar www.somesite.com/myfolder/index.html, ele mostre o conteúdo de uma página em outro domínio www.someothersite.com/blah/blah2/blah3/index.php?user=80338 que tem uma URL terrivelmente longa, que eu não tenho acesso a essa pasta. No entanto, eu não quero que o usuário veja este URL em seu navegador, apenas para que isso aconteça nos bastidores - Eu tentei ler alguns tutoriais sobre a web e o que eu criei está no diretório myfolder:

RewriteEngine On
RewriteRule ^index\.html$ http://www.someothersite.com/blah/blah2/blah3/index.php?user=80338 [QSA,L]

Isso parece fazer o redirecionamento, mas também recebo o novo URL, como posso parar isso?

    
por Robert 28.05.2012 / 17:54

2 respostas

3

A configuração do ProxyPass funciona, mas recentemente descobri que você pode fazer algo semelhante com a reescrita. Usar o sinalizador [P] no final do seu RewriteRule fará com que a reescrita seja tratada por mod_proxy . Exemplo básico seria algo como:

RewriteRule ^(.*)$ http://www.example.com/$1 [P]
    
por 28.11.2012 / 15:54
1

Qualquer redirecionamento externo 301 ou 302 para a outra página será mostrado como o local atual na barra de endereço do URL do navegador. Para obter o resultado desejado, você precisa manter o documento atual como seu index.html local. Então você tem algumas opções para fazer isso. (provavelmente não é uma lista completa ...)

envolva a solicitação em um ProxyPass

(isso é provavelmente o mais transparente para o usuário final, já que eles não têm como detectar que a página está realmente hospedada remotamente, mas é um pouco mais cheia de bola)

Para ocultar o redirecionamento do cliente, você precisaria Proxy da solicitação no arquivo httpd.conf para o seu VirtualHost da forma como;

 <Location /index.html>
   ProxyPass http://www.someothersite.com/blah/blah2/blah3/index.php?user=80338
 </Location>

Para ativar as diretivas acima, você precisará instalar e ativar o módulo mod_proxy_http apache2, que é dependente do sistema (por exemplo, yum, apt, a2enable)

No entanto, você terá alguns problemas interessantes de mapeamento de URL, que teria que resolver caso a caso, para que isso funcionasse de maneira transparente exigiria algum esforço.

Por exemplo, depende de como os links em seu documento remoto são especificados ou totalmente qualificados. Você pode corrigir cada link e URL usando as regras ProxypassReverse e Mod_substitute.

Alternativa: carregue a página em um iframe (ou use quadros antigos de skool)

Você pode usar um iframe , que seria exibido como a barra de endereço do URL do navegador, e carregue o documento remoto em um iframe com algo parecido com isto;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Full Page IFrame</title>
<style type="text/css">
html {overflow: auto;}
html, body, div, iframe {margin: 0px; padding: 0px; height: 100%; border: none;}
iframe {display: block; width: 100%; border: none; overflow-y: auto; overflow-x: hidden;}
</style>
</head>
<body>
<iframe id="tree" name="tree" src="http://www.someothersite.com/blah/blah2/blah3/index.php?user=80338"frameborder="0" marginheight="0" marginwidth="0" 
 width="100%" height="100%" scrolling="auto"></iframe>
</body>
</html>

use a moda antiga conjunto de quadros

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head><title>My First Frame Page</title>
</head>
<frameset cols="100%">
<frame src="http://www.page3.com">
</frameset>
</html>
    
por 28.05.2012 / 18:10