como fazer login qual a página foi “não encontrado”? (Página de erro personalizada Tentando com htaccess, php, HTTP_REFERER)

StackOverflow https://stackoverflow.com/questions/1057928

  •  21-08-2019
  •  | 
  •  

Pergunta

Eu estava apenas querendo saber como obter o link da página da Web que não foi encontrado no meu site.

Com seguinte código .htaccess, quando uma página não-existente é solicitado, o usuário é redirecionado para my_404.php.

Options -Indexes

ErrorDocument 404 http://mysite.com/my_404.php

Se eu tiver que rastrear o que foi o link da página, que não foi encontrado, como eu faço isso ??

Apenas por exemplo, A.php é uma página web válido, enquanto b.php não é. Então, se eu estou em A.php e tentar ver b.php (página inexistente) .. redirecionamentos .htaccess me para my_404.php em que eu vejo HTTP_REFERER como A.php .. mas o que eu estou procurando é que "alguém tentou visualizar b.php". Como posso fazer isso?

Obrigado por sua ajuda.

Editar

Por favor, veja: eu não quero verificar em arquivos de log. Estou perguntando sobre algo na página. Obrigado.

Foi útil?

Solução

Quando você usa um controle remoto ErrorDocument URL como http://mysite.com/my_404.php, Apache irá enviar um redirecionamento para a URL para o cliente, é por isso que você não pode obter a URL que faz com que o 404 a partir $_SERVER['REQUEST_URI'] como Matt Bridges sugeriu. Você pode querer tentar usar um ErrorDocument local (nenhum esquema e servername), assim:

ErrorDocument 404 /my_404.php

Eu $_SERVER['REQUEST_URI'] suspeito, então, devolver o URL originalmente solicitado.

Outras dicas

Esta é provável que já está sendo feito em seu arquivo de log Apache. Você pode apenas analisar os dados, em vez de gravá-la duas vezes.

StackOverflow Archives:

Conteúdo relevante adicionais:

A variável que você está procurando é chamado $ _SERVER [ 'REQUEST_URI']. Ele mantém o pedido original que foi feita para o servidor pelo cliente.

Você pode ver uma lista de outras variáveis ??"$ _SERVER" aqui .

Editar:

Depois de um pouco de google busca, o seu problema é que a sua página de erro é especificado com o http: // qualificador. Mude sua htaccess para que o ErrorDocument é especificado como um arquivo local, por exemplo .:

ErrorDocument 404 /www/my_404.php 

Depois de fazer isso, $ _SERVER [ 'REQUEST_URI'] deve conter o valor correto.

Tenha um olhar em sua matriz $_SERVER em my_404.php

var_dump($_SERVER);

Eu acho que você vai encontrar o que você precisa. : -)

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