Pergunta

Eu configurei alguns redirecionamentos em um servidor Apache. Eles olham para isso:

Redirecionamento /nome /register /login.html

Minha pergunta é essa ... existe de alguma forma para preservar o referenciador HTTP por meio deste redirecionamento? Parece que, por padrão, o Apache descarta as informações. Eu realmente gostaria que, depois que o redirecionamento estivesse completo, o referencial foi dizer:

http://the.orginalurl.com/name/register

Alguém se isso for possível? Caso contrário, pensamentos sobre uma alternativa.

Muito obrigado, Neil

Foi útil?

Solução

Redirect Não preservará o referenciador porque o navegador recebe um 301 e um novo endereço para abrir. De manual:

A diretiva de redirecionamento mapeia um URL antigo em um novo, pedindo ao cliente que retire o recurso no novo local.

mod_rewrite e eu penso) Alias pode reescrever diretamente (ou seja, sem causar um redirecionamento do navegador) e preservar o referencial. Com o MOD_REWRITE, você pode até adicionar o referente como um parâmetro GET à sua solicitação, se desejar.

Outras dicas

É um problema do navegador, não o Apache. Não há muito que você possa fazer sobre isso. Isso é feito para evitar certos problemas de segurança e spam de referências.

http://en.wikipedia.org/wiki/http_referrer#referrer_hiding

Você sempre pode armazenar o referenciador original em uma variável de pipeline no início da solicitação e apenas puxá -la de lá.

Criei uma maneira alternativa que transfere o Refferador através de um redirecionamento 301.https://webmasters.stackexchange.com/questions/4665/

Eu acredito que tudo depende de como você escreve a regra. Pode atuar como um "redirecionamento" ou um "reescrever" de acordo com as bandeiras que você fornece.

1. Redirecionar

302 será enviado para o navegador e iniciará outra solicitação (consulte Firebug com a opção "Persist" ativada):

RewriteCond %{REQUEST_URI} !/index.html
RewriteRule ^(.*)$ /index.html [R=302,L]

2. Reescrever

O navegador não inicia um redirecionamento de 302 porque não enviamos esse cabeçalho, mas mascarará o conteúdo:

RewriteCond %{REQUEST_URI} !/index.html
RewriteRule ^(.*)$ /index.html [L]

Nesta opção, se alguém acessar "Page.html", ele verá o conteúdo de "index.html" não "página.html", mas o URL acima ainda mostrará "página.html"

Bom para a página de manutenção etc ... não tenho certeza sobre as páginas de login ... mas é outra opção em que pensar.

A principal diferença entre o "rewriture" vs "pseudônimo" no meu caso específico é que a reescrita pode ser definida dentro .htaccess enquanto "alias" não ... então nem sempre você pode usar o alias ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top