/ / Crie páginas de erro PHP personalizadas no cPanel sem redirecioná-las da página que lançou o erro - php, apache, .htaccess, cpanel, páginas de erro personalizadas

Crie páginas de erro PHP personalizadas no cPanel sem redirecioná-las para fora da página que lançou o erro - php, apache, .htaccess, cpanel, páginas de erro personalizadas

Estou tentando fazer com que meu servidor tenha documentos / páginas de erro personalizados, mas com PHP código incluído neles, sem redirecioná-los para fora da página que gerou o erro.

Vamos dizer que estamos navegando para http://website.com/pages/1 e foi para lançar o erro 500, por padrão a página seria apenas uma página em branco com o texto "Error 500 (Internal Server Error)"que seria algo como:

http://i.imgur.com/WLO7JkL.png

Como você pode ver acima, ele NÃO foi redirecionado para longe da página que gerou o erro. Eu quero essa página para olhar "uma parte do site" mas com conteúdo PHP incluído neles.

Eu não posso incluir conteúdo PHP nas páginas de erro no cPanel editando as páginas que você vê abaixo:

http://i.imgur.com/jtYjHj8.png

Se eu fosse para editar o erro 500 página acima, com o conteúdo abaixo do problema seria que http://website.com/pages/1 redirecionaria para http://website.com/500.shtml e, em seguida, redirecionar para http://website.com/500.php

eu faço NÃO quer redirecionar a todos de outra forma, isso significa que atualizar a página basicamente apenas atualizará a página 500.php em vez de atualizar a página. /pages/1

<script language="javascript">
window.location.href = "http://www.website.com/500.php"
</script>
<meta http-equiv="refresh" content="0;URL="http://website.com/500.php"" />

O mesmo problema exato existiria, mesmo sem ser 2 redirecionamentos de cadeia, em vez disso, seria apenas 1 redirecionamento usando o seguinte no arquivo .htaccess

ErrorDocument 400 http://website.com/400.php
ErrorDocument 401 http://website.com/401.php
ErrorDocument 403 http://website.com/403.php
ErrorDocument 404 http://website.com/404.php
ErrorDocument 500 http://website.com/500.php

Resultado Atual: Redirecionando para /500.php

Resultado Esperado: Exibindo 500.php in / on http://website.com/pages/1 sem redirecionar

Existe uma maneira de fazer isso via root (posso fazer com que meus hosts façam alguma coisa, se sim, o que?)

Respostas:

1 para resposta № 1

Como os outros responderam isso deve funcionar:

ErrorDocument 500 /500.php

Se você não especificar um URL completo, ele apenas exibe a página (um redirecionamento interno), se você especificar o URL completo, ele emite um redirecionamento de volta para o cliente. Isso é descrito pelo Apache aqui: http://httpd.apache.org/docs/2.4/mod/core.html#errordocument

Observe que quando você especifica um ErrorDocumentaponta para um controle remoto URL (ou seja, qualquer coisa com um método como http na frente dele), Apache O HTTP Server enviará um redirecionamento ao cliente para informá-lo onde encontrar o documento, mesmo que o documento acabe sendo o mesmo servidor.

O fato de que o acima não está funcionando para você significa uma das várias coisas:

  1. Você está fazendo errado e ainda está especificando o URL completo, mesmo que você afirme não estar.
  2. O Cpanel está adicionando o URL completo (não tem certeza de como você edita o arquivo .htaccess ou se ele é feito através da GUI acima).
  3. Seu arquivo .htaccess está sendo ignorado (talvez porque você esteja configurando os valores na GUI ou talvez porque o FileInfo é não definido no nível do servidor, portanto, isso não pode ser especificado no arquivo .htaccess (veja aqui: http://httpd.apache.org/docs/2.4/custom-error.html), nesse caso, deve estar pegando a própria URL completa de outra configuração em algum lugar.
  4. O script 500.php está fazendo o redirecionamento em si (deve ser óbvio das ferramentas do desenvolvedor se preservar o log e ver se uma página é retornada ou duas).
  5. Há um bug no Apache (que eu e outros não conhecemos).
  6. Magia

Você pode verificar essas coisas?

Pode também ajudar a saber em qual versão do Apache você está?

Você também tentou um simples 500.arquivo html só para ver se funciona sem redirecionar? Em teoria, um arquivo 500.php deveria estar bem também, mas seria interessante reduzi-lo (e também mostraria se essa mudança para 500.html foi escolhida e usada ou se ainda estava apontando para 500.php, o que talvez mostre que isto estava sendo escolhido de outra configuração do que você pensa).


0 para resposta № 2

Se você adicionar algo assim em seu.arquivo htaccess deve simplesmente exibir a página de erro sem um redirecionamento. Eu nunca usei caminhos absolutos como você está fazendo no seu exemplo para páginas de erro, então eu não tenho certeza do tipo de comportamento que causa

ErrorDocument 404 /404.php