Which DNS providers allow me to do this?
Todos os competentes. Nem precisa ser um provedor específico do DNS, a maioria dos bons hosts o ajudará com isso também. Existem dois estágios:
- Uma entrada de DNS é adicionada para
*.example.com
- O servidor da web do host (por exemplo, o Apache) está configurado para responder a
*.example.com
roteando-o paraexample.com
'VirtualHost
.
Em seguida, no final, adicione uma entrada .htaccess
que usa RewriteRule
para capturar cada subdomínio e redirecione-a para uma pasta usando a variável HTTP_HOST
.
Não testado, mas algo assim:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.example\.com(.*) http://example.com/$1/$2
Suponha que o usuário solicite app1.example.com/bob
.
Linha 2
Isso vai pegar app1.example.com
no HTTP_HOST
- ele corresponderá ao RewriteCond
.
Linha 3
Normalmente, o Apache só passa /bob
para ser verificado em relação ao RewriteRule
. Para usar o subdomínio, exploramos Encadeamento forçando a próxima regra a corresponder
${HTTP_HOST}$1
| ^ /bob
^ app1.example.com
Linha 4
A% final RewriteRule
agora está combinando com app1.example.com/bob
e não apenas /bob
. Como resultado, ele pode ter uma expressão regular 'completa' para corresponder a esse subdomínio e ao caminho e executar o redirecionamento desejado.
Se você não quiser esse recurso, simplifique as regras.
Are these alternatives feasible? Redirect them all to a special webapp with a static IP that redirects to the proper subfolder. How can I know from which subdomain they came from?
Não há maneira certa de fazer isso. Você poderia experimentar o HTTP Referer, mas ele não é sempre enviado por todos os navegadores, alguns firewalls removem o cabeçalho, etc.
Programatically create each rule when I need it. Which DNS providers have API access to add rules? I think Amazon Route 53 might be the answer here.
Isso resultaria em uma solução mais complexa para o acima, então eu não recomendaria isso. Também criaria um atraso: os caches de DNS precisariam ser atualizados e determinados visitantes não conseguiriam usar o subdomínio imediatamente até que o fizessem. Pelo menos com a minha sugestão acima, eles seriam capazes de ir imediatamente.