Posso fazer um redirecionamento complexo de URL e subpasta sem usar o arquivo HOSTS?

3

Eu tenho um software legado que não será atualizado e não tenho capacidade de modificar, o que chama uma URL específica para informações. No entanto, essa URL foi alterada posteriormente e não retorna mais um resultado de trabalho. Aqui está o exemplo: link

Sua estrutura atual é: link

Pelo que entendi, o HOSTS é baseado apenas em IP. Existe uma maneira de eu forçar qualquer coisa chamando o primeiro exemplo para retornar o segundo exemplo?

Obrigado

    
por Kevin O. 21.09.2017 / 16:49

2 respostas

3

Como você diz, com hosts você pode controlar somente o IP, mas como o novo URL é outro subdomínio, podemos combinar usando hosts com um servidor web local para reescrever o URL. Observe que essa solução alternativa requer que o aplicativo use um navegador ou outro componente que siga os redirecionamentos de URL.

Vou usar uma instalação baunilha do Apache, já que não precisamos de PHP ou DB, mas se você quiser, pode usar uma distribuição como XAMPP . As etapas são:

  • Faça o download do o Apache ZIP do Apachehaus , eu usei a versão de 32 bits do VC11 . Note que esta versão precisa do Visual C ++ 2012 redistribuível , faça o download e instale-o não o tenha instalado (se você usar outra versão, precisará da versão correspondente do C + + Redistribuível).

  • Extraia o conteúdo do ZIP em uma pasta, vou usar C:\Apache , mas você pode usar outra pasta, basta usar essa pasta nas próximas etapas.

  • Acesse C:\Apache\Apache24\conf e abra httpd.conf com um editor de texto e faça as seguintes alterações:

    • Pesquise Define SRVROOT "/Apache24" e substitua por Define SRVROOT "C:\Apache\Apache24" , isso diz ao Apache onde ele está instalado.
    • Pesquise #LoadModule rewrite_module modules/mod_rewrite.so e exclua o # inicial, isso carrega o módulo de regravação de URL.
    • Pesquise DocumentRoot "${SRVROOT}/htdocs" , algumas linhas depois de ver AllowOverride None , substitua por AllowOverride All , isso permite a regravação de URL.
  • Você pode iniciar o Apache manualmente indo para C:\Apache\Apache24\bin e executando httpd.exe , mas é mais conveniente instalá-lo como um serviço. Para isso, abra um cmd.exe , vá para essa pasta e execute httpd.exe -k install . Uma vez que o serviço é instalado, você pode iniciar / pará-lo a partir da ferramenta administrativa Serviços do Painel de Controle (você precisa iniciá-lo pela primeira vez após a instalação a partir daí, será iniciado automaticamente com o Windows).

  • Teste se o servidor está em execução, abra http://localhost , ele mostrará uma página de boas-vindas, se estiver funcionando corretamente. Se o servidor não iniciar a inicialização manualmente a partir da linha de comando, ele imprimirá o erro que impedirá sua inicialização (por exemplo, se você colocar um caminho incorreto no ServerRoot).

  • Crie um novo arquivo no seu editor de texto e salve-o como .htaccess (observe o ponto inicial) na pasta C:\Apache\Apache24\htdocs , você tem que colocar o seguinte nesse arquivo (mudar o domínio e a subpasta para os reais ):

    RewriteEngine on
    RewriteRule ^sub1/sub2/sub3/(.*)$ http://subdomain2.domain.com/sub4/$1 [R]
    
  • Por fim, edite o arquivo hosts do Windows e adicione a seguinte linha:

    127.0.0.1   subdomain1.domain.com
    

Você pode testar se o redirecionamento funciona em um navegador, se tudo correu bem, agora que você digita link o navegador será redirecionado para link .

Se quiser usar essa solução alternativa em vários computadores, você não precisa instalar o Apache em cada um, supondo que 192.168.0.10 seja o IP da máquina com Apache, apenas adicione o arquivo hosts de cada máquina:

192.168.0.10   subdomain1.domain.com

Note que você precisa permitir conexões ao Apache no firewall, pelo menos para a rede local.

    
por 21.09.2017 / 22:09
0

As I understand it, HOSTS is IP based only. Is there a way for me to force anything calling the first example to return the second example?

A solução simples é configurar um servidor web ou outro proxy para transparentemente reescreva solicitações de URL da configuração antiga para a nova. Isso pode ser feito com o Apache e o mod_rewrite (bem detalhados na resposta do @ alberto-martinez).

I'm not the only one who uses this tool and would like to deploy a solution if possible to other members of my team who, unfortunately, are less technically skilled than I am. Ideally we'd like a set-and-forget solution[.]

Como você também expressou o desejo de evitar arquivos de hosts (embora talvez por motivos mais técnicos), convém considerar o uso de uma solução de DNS em conjunto com o Apache.

Basicamente, seria um redirecionamento local adicional (via DNS) de subdominio1.dominio.com para o servidor que hospeda o Apache (ou qualquer outro). Desde que as pessoas que usam o software estivessem conectadas a esse servidor DNS, não haveria necessidade de modificar o arquivo hosts de cada computador.

Advertências

  • Você precisaria ser específico sobre o uso de subdominio1.dominio.com . Se você acabou de colocar uma entrada para domain.com , isso causaria problemas (como subdomain2.domain.com também seria detectado).

  • Se você usou essa solução, talvez precise ajustar a regra de reescrita (tive problemas, mas, segundo os comentários do Alberto, isso parece ser baseado em metodologia de teste / erro do usuário) .

  • Existem potenciais implicações de segurança com a clonagem de Domínios de Primeiro Nível públicos (como .com ) e possivelmente mais com um domínio ativo, portanto você pode querer fazer alguma pesquisa antes de implantar um solução semelhante.

por 22.09.2017 / 12:34