vários tipos diferentes de resposta ao navegador irá resultar em um redirecionamento. Estes variam se eles afetam os cabeçalhos HTTP ou o conteúdo HTML. As técnicas utilizadas dependem tipicamente do papel da pessoa que a implementa e do seu acesso a diferentes partes do sistema. Por exemplo, um autor da web sem controle sobre os cabeçalhos pode usar uma meta tag de atualização, enquanto um administrador de servidor web redirecionando todas as páginas em um site é mais provável de usar a configuração do servidor.,
Manual redirectEdit
A técnica mais simples é pedir o visitante para seguir um link para a nova página, geralmente utilizando uma âncora HTML como:
Please follow <a href="http://www.example.com/">this link</a>.
Este método é muitas vezes usado como uma queda-de — volta- se o navegador não suporte a redirecionamento automático, o visitante ainda pode chegar a um documento de destino seguindo o link.
HTTP status codes 3xxEdit
In The HTTP protocol used by the World Wide Web, a redirect is a response with a status code beginning with 3 that causes a browser to display a different page., Se um cliente encontra um redirecionamento, ele precisa tomar uma série de decisões sobre como lidar com o redirecionamento. Diferentes códigos de status são usados pelos clientes para entender a finalidade do redirecionamento, como lidar com caching e que método de pedido para usar para a solicitação subsequente.
o HTTP/1.1 define vários códigos de estado para o redirecionamento (RFC 7231):
- 300 múltiplas escolhas (e.g. oferta de diferentes línguas)
- 301 movido permanentemente (redireciona permanentemente a partir de uma URL para outra passar link de capital para a página redirecionada)
- 302 found (originalmente, “redirecionamento temporário” em HTTP/1.,0 e popularmente usado para scripts CGI; substituído por 303 e 307 EM HTTP / 1.,i> 303 veja outros (forças de um pedido GET para a URL de novo, mesmo se o pedido original era PÓS)
- 307 redirecionamento temporário (fornece uma nova URL para o navegador para reenviar uma solicitação GET ou POST)
- 308 redirecionamento permanente (fornece uma nova URL para o navegador para reenviar uma solicitação GET ou POST)
Redirecionar códigos de status e characteristicsEdit
Código de Status HTTP | HTTP Versão | Temporária / Permanente | Cache | Método de Solicitação de Pedido Subsequente |
---|---|---|---|---|
301 | HTTP/1.,0 | Permanent | Yes | GET / POST may change |
302 | HTTP/1.0 | Temporary | not by default | GET / POST may change |
303 | HTTP/1.1 | Temporary | never | always GET |
307 | HTTP/1.1 | Temporary | not by default | may not change |
308 | HTTP/1.,1 | Permanente | por omissão | não pode alterar |
Todos esses códigos de status exigem que o URL de destino do redirecionamento que será dada no Local: cabeçalho de resposta HTTP. As 300 escolhas múltiplas normalmente listam todas as escolhas no corpo da mensagem e mostram a escolha padrão no cabeçalho localização:.
(os códigos de Estado 304 não alterados e 305 proxy de Utilização não são redirectos).,
Exemplo de resposta HTTP para um 301 redirectEdit
UMA resposta HTTP com o 301 “movido permanentemente” redirecionar parecido com este:
Usando scripts do lado do servidor para redirectionEdit
autores de páginas da Web produção de conteúdo em HTML podem não costumam criar redirecionamentos utilizando os cabeçalhos de HTTP como estes são gerados automaticamente pelo servidor web do programa até o momento de servir um arquivo HTML. O mesmo é geralmente verdadeiro mesmo para programadores que escrevem scripts CGI, embora alguns servidores permitam scripts adicionar headers personalizados (por exemplo, ao habilitar “não-analisados-headers”)., Muitos servidores web irão gerar um código de Estado 3xx se um script produzir uma linha de cabeçalho ” localização:”. Por exemplo, em PHP, pode-se usar a função “header”:
podem ser necessários mais cabeçalhos para evitar Cache. O programador deve garantir que os cabeçalhos são de saída antes do corpo. Isso pode não se encaixar facilmente com o fluxo natural de controle através do Código. Para ajudar com isso, alguns frameworks para a geração de conteúdo do lado do servidor podem buffer os dados do corpo., No ASP linguagem de script, isso também pode ser feito usando response.buffer=true
e response.redirect "http://www.example.com/"
HTTP/1.1 permite uma referência URI relativa ou absoluta URI de referência. Se a referência URI for Relativa, o cliente calcula a referência URI absoluta necessária de acordo com as regras definidas na RFC 3986.
Apache HTTP Server mod_rewriteEdit
a extensão do Apache HTTP Server mod_ aiias pode ser usada para redirecionar certas solicitações., As diretivas de configuração típicas parecem:
para reescrever e redirecionar URL mais flexíveis, o mod_ reescrever Apache pode ser usado. E. g., redirecionar solicitações de um para um nome de domínio canônico:
RewriteEngine onRewriteCond %{HTTP_HOST} ^(+\.)*oldsite\.example\.com\.?(:*)?$ RewriteRule ^(.*)$ http://newsite.example.net/$1
esta configuração pode ser aplicado a um ou a todos os sites no servidor através do servidor de arquivos de configuração ou em um único diretório de conteúdo através de uma .htaccess
arquivo.,
nginx regriteedit
Nginx tem um módulo integrado de reescrita http, que pode ser usado para realizar processamento avançado de URL e até mesmo geração de página web (com a diretiva retorno). Um exemplo que mostra essa utilização avançada do módulo de reescrita é mdoc.su, que implementa um serviço determinístico de encurtamento de URL inteiramente com a ajuda da linguagem de configuração nginx sozinho.
Por exemplo, se um pedido para / DragonFlyBSD / HAMMER.5 se aparecesse, seria redirecionado internamente para /d / HAMMER.,5 com o primeiro reescrever directiva abaixo (só que afetam o estado interno, sem qualquer HTTP respostas emitidas para o cliente apenas ainda) e, em seguida, com o segundo reescrever directiva, uma resposta HTTP com um 302 Encontrado código de status será emitido para o cliente para redirecionar para o externo, cgi, scripts de web-man:
Actualizar Meta tag e HTTP atualizar headerEdit
Netscape introduziu a meta refresh funcionalidade que atualiza a página depois de um determinado período de tempo. Isto pode especificar um novo URL para substituir uma página por outra. Isto é suportado pela maioria dos navegadores da web., Um tempo-limite de zero segundos provoca um redireccionamento imediato. Isto é tratado como um redirecionamento permanente 301 pelo Google, permitindo a transferência do PageRank para a página alvo.
Este é um exemplo de um documento HTML simples que usa esta técnica:
Esta técnica pode ser usada pelos autores da web porque a meta tag está contida dentro do próprio documento. A meta tag deve ser colocada na seção” head ” do arquivo HTML. O número “0” Neste exemplo pode ser substituído por outro número para alcançar um atraso de tantos segundos., A âncora na seção “body” é para usuários cujos navegadores não suportam este recurso.
o mesmo efeito pode ser alcançado com um HTTP refresh
cabeçalho:
Esta resposta é mais fácil de gerar pelos programas CGI porque não é necessário alterar o código de estado padrão.
Aqui está um programa CGI simples que faz este redirecionamento:
Nota: Normalmente, o Servidor HTTP adiciona a linha de estado e o cabeçalho conteúdo-Comprimento automaticamente.,
o W3C desincentiva o uso de meta refresh, uma vez que não comunica qualquer informação sobre o recurso original ou novo, para o navegador (ou motor de busca). As Diretrizes de acessibilidade de conteúdo Web do W3C (7.4) desencorajam a criação de páginas auto-refrescantes, uma vez que a maioria dos navegadores da web não permitem ao usuário desativar ou controlar a taxa de atualização. Alguns artigos que eles escreveram sobre o assunto incluem W3C Web Content Accessibility Guidelines (1.0): garantir o controle do usuário de mudanças de conteúdo sensíveis ao tempo, usar redirecionamento padrão: não quebre o botão de volta!, e as principais técnicas para as orientações de acessibilidade de conteúdos web 1.0, Secção 7.
JavaScript redirectsEdit
o JavaScript pode causar um redirecionamento, pela definição de window.location
atributo, por exemplo:
window.location='http://www.example.com/'
Normalmente de JavaScript empurra o redirecionador de URL do site para o histórico do navegador. Pode causar redirecionamento de loops quando os usuários carregam no botão de trás. Com o seguinte comando você pode evitar este tipo de comportamento.,
window.location.replace('http://www.example.com/')
No entanto, os cabeçalhos HTTP ou a meta tag de actualização podem ser preferidos por razões de segurança e porque JavaScript não será executado por alguns navegadores e muitos web crawlers.
Quadro redirectsEdit
Um pouco diferente efeito pode ser conseguido através da criação de um quadro embutido:
<iframe height="100%" width="100%" src="http://www.example.com/">Please follow <a href="http://www.example.com/">link</a>.</iframe>
Uma diferença principal para o acima redirecionar métodos é que, para um quadro de redirecionamento, o navegador exibe o URL do documento moldura, e não o URL da página de destino na barra de URL., Esta técnica de camuflagem pode ser usada para que o leitor veja uma URL mais memorável ou para fraudulentamente esconder um site de phishing como parte de spoofing do site.
Before HTML5, the same effect could be done with an HTML frame that contains the target page:
Redirect chainsEdit
one redirect may lead to another. Por exemplo, o URL “http://wikipedia.com” (com “*.com” como domínio) primeiro é redirecionado para https://www.wikipedia.org/ (com o nome de domínio .org), onde você pode navegar de site específicos do idioma., Isto é inevitável se os diferentes elos da cadeia são servidos por servidores diferentes, embora deva ser minimizado reescrevendo a URL tanto quanto possível no servidor antes de devolvê-lo ao navegador como um redirecionamento.
Wikipedia has been redirecting its pages to HTTPS by default since 2015.
redireciona loopsEdit
às vezes um erro pode fazer com que uma página acabe redirecionando de volta para si mesma, possivelmente através de outras páginas, levando a uma sequência infinita de redirecionamentos. Os navegadores devem parar de redirecionar após um certo número de hops e exibir uma mensagem de erro.
O HTTP / 1.,1 Estados Padrão:
um cliente deve detectar e intervir em redireções cíclicas (i.e., loops de redirecionamento “infinito”).
nota: uma versão anterior desta especificação recomendou um máximo de cinco redireções (, secção 10.3). Os desenvolvedores de Conteúdo precisam estar cientes de que alguns clientes podem implementar tal limitação fixa.