Apache: Carregar script com base no nome do host

Apache: Carregar script com base no nome do host

Não acho que isso seja tão complicado, mas estou tendo dificuldade em tentar descobrir a melhor maneira de fazer isso.

Temos um site em site.example.comcom 5 páginas abaixo dele. Digamos que essas 5 páginas sejam site.othersite.com/page1.html, page2.html, page3.html, page4.html, page5.html. Agora, também temos outros 5 subdomínios, lp1.OTHERSITE.com, lp2.othersite.com, lp3.othersite.com, lp4.othersite.com, lp5.othersite.com. Todos esses domínios estão hospedados no mesmo servidor, na mesma raiz de documentos. Agora, o que precisamos que o Apache faça é um redirecionamento transparente (ou seja, a barra de endereço não muda) para os seguintes padrões:

lp1.othersite.com --> site.example.com/page1.html
lp2.othersite.com --> site.example.com/page2.html
lp3.othersite.com --> site.example.com/page3.html
lp4.othersite.com --> site.example.com/page4.html
lp5.othersite.com --> site.example.com/page5.html

Isso é possível usando apenas o Apache? Caso contrário, já escrevi um script PHP para carregar as páginas site.example.com/page*.html em um iframe baseado no nome do host recebido, mas não tenho certeza de como dizer ao Apache para enviar esses 5 lp*. domínios othersite.com para esse script PHP.

Espero estar explicando o projeto bem o suficiente. Basicamente, precisamos redirecionar cada um dos subdomínios lp* para uma página site.example.com/page*.html diferente sem alterar o endereço na barra de endereço.

Dicas e conselhos seriam apreciados. Tudo o que consegui fazer foi que o Apache redirecionasse essas URLs para o meu script PHP, mas a barra de endereço mudou e, por ser um redirecionamento, a barra de endereço também mudou (nesse ponto o script PHP não funcionou, porque o nome do host mudou)

Responder1

Configure um host virtual para cada nome de host, usando o mesmo DocumentRoot, mas use:

DirectoryIndex page1.html

para lp1,

DirectoryIndex page2.html

para lp2 etc. para que essas páginas sejam usadas como página padrão em vez de index.html.

Então, por exemplo, http://lp3.othersite.com/servirá page3.html. Também permitirá que você navegue para http://lp3.othersite.com/page1.htmletc., mas a página padrão será a que você designar por meio da DirectoryIndexdiretiva.

Responder2

Talvez esteja faltando alguma coisa, mas acho que tudo o que você está pedindo são hosts virtuais.https://httpd.apache.org/docs/2.2/vhosts/

O host virtual requer várias entradas DNS definidas para o mesmo servidor web. O Apache serve uma página designada com base no nome DNS usado. O usuário vê a irritação que digitou, a menos que você redirecione.

Responder3

Você pode fazer isso com URL Rewrite. Apenas um exemplo rápido e improvisado (pode ou não funcionar):

RewriteCond %{HTTP_HOST} ^lp([0-9]).othersite.com [NC] 
RewriteRule ^(.*)$ page$1.html [NC,QSA] 

Responder4

SeguirDocumentação do Host Virtual Apachepara configurar VirtualHostpara cada FQDN e, em seguida, usemod_dirpara definir DirectoryIndexe para uso de redirecionamentomod_rewrite.

Tutorial:

Como criar redirecionamentos temporários e permanentes com Apache e Nginx

informação relacionada