Redirecionamentos HTTP <httpRedirect>
O elemento <httpRedirect>
define as configurações do IIS (Serviços de Informações da Internet) 7 que redirecionam solicitações de cliente para um novo local.
Há vários motivos pelos quais você pode querer redirecionar clientes para um novo local. Por exemplo, se sua empresa estiver migrando para um novo site, você poderá redirecionar todas as solicitações do site antigo para o novo site. Da mesma forma, se você implantou um novo aplicativo em um servidor Web, poderá redirecionar todas as solicitações para o namespace de URL do aplicativo antigo (por exemplo, http://www.contoso.com/app_v1.0/
) para o novo local de aplicativos (por exemplo, http://www.contoso.com/app_v2.0/
).
Na configuração mais simples, você só precisa definir o habilitado e atributos de destino do elemento <httpRedirect>
para redirecionar os clientes para um novo local. No entanto, elementos adicionais como o exactDestination e os atributos httpResponseStatus permitem que você configure a experiência do usuário final do redirecionamento especificando respectivamente se o IIS 7 retornará a URL de destino exatamente como inserida e qual código de resposta HTTP retornará ao cliente Web.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | Um status de resposta HTTP adicional foi adicionado ao elemento <httpRedirect> no IIS 10.0. |
IIS 8.5 | O elemento <httpRedirect> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <httpRedirect> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <httpRedirect> não foi modificado no IIS 7.5. |
IIS 7.0 | O elemento <httpRedirect> foi introduzido no IIS 7.0. |
IIS 6,0 | O elemento <httpRedirect> substitui a propriedade de metabase HttpRedirect do IIS 6.0. |
Instalação
O Redirecionamento HTTP não está disponível na instalação padrão do IIS 7 e posteriores. Para instalar, use as etapas a seguir.
Windows Server 2012 R2 ou Windows Server 2012
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
- Na página Funções de Servidor, expanda Servidor Web (IIS), expanda Servidor Web, expanda Recursos HTTP Comuns e, em seguida, selecione Redirecionamento HTTP. Clique em Avançar.
. - Na página Selecionar recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
- Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
- Expanda Serviços de Informações da Internet, Serviços da World Wide Web, Recursos HTTP Comuns e selecione Redirecionamento HTTP.
- Clique em OK.
- Clique em Fechar.
Windows Server 2008 R2 ou Windows Server 2008
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
- No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
- No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
- Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Recursos HTTP Comuns, selecione Redirecionamento HTTP e clique em Avançar.
- Na página Confirmar Seleções de Instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows Vista ou Windows 7
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
- Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Recursos HTTP Comuns.
- Selecione Redirecionamento HTTP e clique em OK.
Instruções
Não há uma interface do usuário para adicionar redirecionamentos HTTP curinga para o IIS 7. Para obter exemplos de como adicionar elementos <add>
ao elemento <httpRedirect>
programaticamente, confira a seção Exemplos de Código desse documento.
Como adicionar uma regra de redirecionamento HTTP a um site ou aplicativo
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, expanda o nome do servidor, expanda Sites e navegue até o site ou aplicativo para o qual deseja configurar páginas de erro personalizadas.
No painel Página Inicial, clique duas vezes em Redirecionamento de HTTP.
No painel de Redirecionamento de HTTP, marque a caixa para redirecionar solicitações e insira a URL de destino.
Opcionalmente, você pode especificar qualquer uma das seguintes opções:
Configure o destino de redirecionamento para ser o destino exato conforme inserido.
Configure o destino de redirecionamento para ser limitado à pasta raiz da URL de destino, não às subpastas.
Configure o código de status HTTP, que pode ser uma destas opções:
- 301 Permanent
- 302 Found
- 307 Temporary
- 308 Permanent Redirect
Observação
O IIS 7 retornará, respectivamente, os seguintes status de resposta HTTP reais para cada uma das opções acima:
- HTTP/1.1 301 Moved Permanently
- HTTP/1.1 302 Redirect
- HTTP/1.1 307 Redirect
- HTTP 1.1 308 Redirected Permanently
Quando terminar todas as alterações acima, clique em Aplicar no painel Tarefas.
Configuração
Atributos
Atributo | Descrição | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
childOnly |
Atributo booliano opcional. Especifica se o valor de destino deve ser adicionado ao início do nome do arquivo que contém a solicitação a ser redirecionada. Por exemplo, se childOnly foram definidos como true e o valor de destino foi configurado para ser http://marketing.contoso.com/ , uma solicitação de http://contoso.com/default.htm seria redirecionada para http://marketing.contoso.com/default.htm . O valor padrão é false . |
||||||||||
destination |
Atributo de cadeia de caracteres opcional. Especifica uma URL ou um caminho virtual para o qual redirecionar o cliente. |
||||||||||
enabled |
Atributo booliano opcional. Especifica se o redirecionamento está habilitado (true) ou desabilitado (false). O valor padrão é false . |
||||||||||
exactDestination |
Atributo booliano opcional. Especifica que o valor de destino deve ser considerado um local de destino absoluto, não um local relativo. O valor padrão é false . |
||||||||||
httpResponseStatus |
Atributo de enumeração opcional. Especifica o tipo de redirecionamento. O atributo httpResponseStatus pode ser um dos valores possíveis a seguir. O padrão é Found .
|
Elementos filho
Elemento | Descrição |
---|---|
add |
Elemento opcional. Adiciona uma regra de redirecionamento curinga à coleção de regras de redirecionamento. |
clear |
Elemento opcional. Remove todas as referências a regras de redirecionamento curinga da coleção de regras de redirecionamento. |
remove |
Elemento opcional. Remove uma referência para uma regra de redirecionamento curinga da coleção de regras de redirecionamento. |
Exemplo de configuração
O seguinte elemento de <httpRedirect>
padrão é configurado no arquivo ApplicationHost.config raiz no IIS 7 quando o serviço de função de redirecionamento HTTP é instalado. Esta seção de configuração herda as configurações padrão, a menos que você use o elemento <clear>
.
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
O exemplo de configuração a seguir habilita o redirecionamento e configura a URL de destino para a qual os clientes são redirecionados.
<system.webServer>
<httpRedirect enabled="true" destination="http://www.contoso.com/" />
</system.webServer>
O exemplo de configuração a seguir adiciona uma entrada de redirecionamento curinga que redireciona todas as solicitações de arquivos PHP para a página inicial do seu site.
Observação
Este exemplo é útil se você tiver removido todos os aplicativos baseados em ASP do seu site e quiser que as solicitações do cliente para os aplicativos antigos sejam redirecionadas para a raiz do seu site, em vez de receber uma resposta HTTP 404 Não Encontrado.
<configuration>
<system.webServer>
<httpRedirect enabled="true" exactDestination="true" httpResponseStatus="Found">
<add wildcard="*.php" destination="/default.htm" />
</httpRedirect>
</system.webServer>
</configuration>
Exemplo de código
Os exemplos de código a seguir configuram o Site Padrão para redirecionar todas as solicitações para http://www.contoso.com
usando um código de status HTTP 302.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /enabled:"True"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /destination:"http://www.contoso.com"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /exactDestination:"False"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /httpResponseStatus:"Found"
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection httpRedirectSection = config.GetSection("system.webServer/httpRedirect");
httpRedirectSection["enabled"] = true;
httpRedirectSection["destination"] = @"http://www.contoso.com";
httpRedirectSection["exactDestination"] = false;
httpRedirectSection["httpResponseStatus"] = @"Found";
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim httpRedirectSection As ConfigurationSection = config.GetSection("system.webServer/httpRedirect")
httpRedirectSection("enabled") = True
httpRedirectSection("destination") = "http://www.contoso.com"
httpRedirectSection("exactDestination") = False
httpRedirectSection("httpResponseStatus") = "Found"
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRedirectSection.Properties.Item("enabled").Value = true;
httpRedirectSection.Properties.Item("destination").Value = "http://www.contoso.com";
httpRedirectSection.Properties.Item("exactDestination").Value = false;
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found";
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site")
httpRedirectSection.Properties.Item("enabled").Value = True
httpRedirectSection.Properties.Item("destination").Value = "http://www.contoso.com"
httpRedirectSection.Properties.Item("exactDestination").Value = False
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found"
adminManager.CommitChanges()
Os exemplos de código a seguir adicionam uma entrada de redirecionamento curinga que redireciona todas as solicitações de arquivos ASP para a home page do seu site.
Observação
Este exemplo é útil se você tiver removido todos os aplicativos baseados em ASP do seu site e quiser que as solicitações do cliente para os aplicativos antigos sejam redirecionadas para a raiz do seu site, em vez de receber uma resposta HTTP 404 Não Encontrado.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /enabled:"True" /exactDestination:"True" /httpResponseStatus:"Found"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /+"[wildcard='*.asp',destination='/default.htm']"
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection httpRedirectSection = config.GetSection("system.webServer/httpRedirect");
httpRedirectSection["enabled"] = true;
httpRedirectSection["exactDestination"] = true;
httpRedirectSection["httpResponseStatus"] = @"Found";
ConfigurationElementCollection httpRedirectCollection = httpRedirectSection.GetCollection();
ConfigurationElement addElement = httpRedirectCollection.CreateElement("add");
addElement["wildcard"] = @"*.asp";
addElement["destination"] = @"/default.htm";
httpRedirectCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim httpRedirectSection As ConfigurationSection = config.GetSection("system.webServer/httpRedirect")
httpRedirectSection("enabled") = True
httpRedirectSection("exactDestination") = True
httpRedirectSection("httpResponseStatus") = "Found"
Dim httpRedirectCollection As ConfigurationElementCollection = httpRedirectSection.GetCollection
Dim addElement As ConfigurationElement = httpRedirectCollection.CreateElement("add")
addElement("wildcard") = "*.asp"
addElement("destination") = "/default.htm"
httpRedirectCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRedirectSection.Properties.Item("enabled").Value = true;
httpRedirectSection.Properties.Item("exactDestination").Value = true;
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found";
var httpRedirectCollection = httpRedirectSection.Collection;
var addElement = httpRedirectCollection.CreateNewElement("add");
addElement.Properties.Item("wildcard").Value = "*.asp";
addElement.Properties.Item("destination").Value = "/default.htm";
httpRedirectCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site")
httpRedirectSection.Properties.Item("enabled").Value = True
httpRedirectSection.Properties.Item("exactDestination").Value = True
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found"
Set httpRedirectCollection = httpRedirectSection.Collection
Set addElement = httpRedirectCollection.CreateNewElement("add")
addElement.Properties.Item("wildcard").Value = "*.asp"
addElement.Properties.Item("destination").Value = "/default.htm"
httpRedirectCollection.AddElement(addElement)
adminManager.CommitChanges()