Como eu configuro o IIS 7 (asp.net com desconto) para apontar subdomínios em subdiretórios de aplicativos?

3

Eu tenho uma conta asp.net com desconto, que usa o IIS 7 e desejo configurar subdomínios para apontar para aplicativos específicos no site.

Por exemplo:

's1.site.com' executaria o aplicativo em 'site.com/serverone'. Eu gostaria que o subdomínio fosse opaco para que os usuários não precisassem lidar com a parte / serverone.

Houve uma pergunta semelhante em falha do servidor, mas envolve a criação de um novo site para cada subdomínio, onde eu prefiro apenas rotear para aplicativos independentes em subdiretórios para cada subdomínio.

O asp.net também oferece uma solução programática baseada em script, mas esta é obviamente uma solução menos desejável e flexível, e provavelmente resulta em desempenho reduzido (embora eu não tenha realmente medido a diferença entre os dois métodos).

    
por Mark Rogers 24.03.2010 / 15:17

2 respostas

2

Usando o URL Rewrite , que Sam Cogen mencionou, que é instalado automaticamente em qualquer conta asp.net com desconto (e que pode ser instalado em qualquer servidor IIS7), criei uma regra de reescrita para resolver o meu problema.

Nota : A equipe do asp.net com desconto disse que uma regra de reescrita é a única maneira de realizar isso em uma de suas contas, além de um script programático. O asp.net oferece um script (digamos, hack) programático que roteará subdomínios para subdiretórios, mas eu precisava de mais flexibilidade e desempenho do que essa solução forneceria.

Se o módulo de reescrita do IIS 7 não estiver instalado, você terá que encontrar o módulo (provavelmente no site do IIS da Microsoft) e instalá-lo.

Quando o módulo de reescrita estiver instalado no IIS, conecte-se a ele usando o Gerenciador do IIS.

Verifique se você tem o nível raiz do site selecionado ao criar a regra (em vez do subdiretório onde o aplicativo está), isso é muito importante porque me levou a um erro crítico que perdi algum tempo. As regras de reescrita podem ser aplicadas em diferentes níveis na hierarquia de diretórios, fazendo com que uma regra tenha efeitos diferentes dependendo de onde na hierarquia de diretórios a regra está localizada (acredito que faça uma alteração no web.config local, quando uma regra é criado, mas não tomei tempo para confirmar isso). Isso também significa que você não pode ver as regras definidas em outros diretórios quando você está alterando regras em outro diretório.

A seleção do diretório raiz para a reescrita é importante porque você deseja reencaminhar todos os URLs de subdomínio para o URL do subdiretório (exceto aqueles já roteados para o subdiretório).

Tendo selecionado o diretório do site raiz, clique duas vezes em URL rewrite , para entrar na área de reescrita. Em seguida, clique em Adicionar regra (s) e crie uma regra em branco.

Para a correspondência

Uso de

Padrão : ^(?!serverone/)(.*) e defina

URL solicitado: para ' Corresponde ao padrão ' e

Usando para Expressões regulares .

Isso encaminhará qualquer url por essa regra, ignorando aquelas que já estão indo para o subdomínio correto, mas queremos restringir a reescrita do material de roteamento que não tem o subdomínio na URL, então, em seguida, adicionaremos uma condição .

Ele só precisa de uma condição, usando {HTTP_HOST} para entrada , e o padrão para isso é: s1.site.com

Por fim, para a ação, você precisa de um tipo de ação 'de' reescrever 'que acrescenta o valor da string de consulta.

O URL de reescrita deve ser: serverone/{R:0} .

    
por 25.03.2010 / 09:21
4

Não tenho certeza de como o painel de controle do desconto aps.net funciona, mas se você estiver fazendo isso diretamente no IIS, será necessário criar um site separado para cada aplicativo, não necessariamente cada subdomínio, se houver mais de um subdomínio por aplicativo, em seguida, configure-o com ligações para cada URL de subdomínios. A raiz de cada site seria, então, sua pasta de aplicativos. Você não pode simplesmente usar uma subpasta do site principal, já que não pode adicionar ligações a uma pasta.

Como alternativa, você pode usar URL Rewrite para reescrever a solicitação de site.com/serverone para s1.site.com

    
por 24.03.2010 / 15:22