Mantenha o referente HTTP
-
20-09-2019 - |
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
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.
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 ...