Pergunta

Hi criaram um error.php para Joomla para redirecionar 404 erros, etc, para um artigo Joomla. O código abaixo funciona para um erro 404, mas um 403 retorna uma página em branco. Posso navegar até a página diretamente fora meu script assim que deve ser o meu código ou como ele é interativo nele do meio ambiente.

Graças Stephen

defined( '_JEXEC' ) or die( 'Restricted access' );
if ($this->error->code == 404)
{
Header( "HTTP/1.1 404 Not found" );
header("Location: http://www.queensberry.com/misc/filenotfound/");
} else if ($this->error->code == 403) {
Header( "HTTP/1.1 403 Restricted Content" );
Header( "Location: http://www.queensberry.com/restrictedcontent/" ); 
} else {
echo "hello world error code = " . $this->error->code;
}
?>
Foi útil?

Solução 2

Eu aprecio a ajuda de todos, mas as respostas estavam me mandando em uma direção diferente do que eu estava esperando. Eu queria continuar usando o arquivo error.php do Joomla como o destino para erros Joomla mas em vez de formatação da página para olhar como se fosse parte do site que eu queria para redirecionar para o conteúdo Joomla.

No final, eu encontrei o que eu precisava era de uma saída; no meu script. Então aqui é o error.php como ele está trabalhando agora.

defined( '_JEXEC' ) or die( 'Restricted access' );
if ($this->error->code == 404)
{
Header( "HTTP/1.1 404 Not found" );
header("Location: http://www.queensberry.com/misc/filenotfound/");
exit;
} else if ($this->error->code == 403) {
Header( "HTTP/1.1 403 Restricted Content" );
Header( "Location: http://www.queensberry.com/restrictedcontent/" ); 
exit;
} else {
echo "hello world error code = " . $this->error->code;
}
?>

Outras dicas

Ao invés de usar Header("Loaction:...") você deve processar a página "conteúdo restrito" com um include() ou algo assim e depois sair. O navegador não está seguindo o cabeçalho Localização depois de receber um 403 mais provável.

O cabeçalho ( "Location:") está causando um redirecionamento padrão para uma nova página. O erro 403 só será enviado se ele está na página processada pelo PHP. Então você está tentando efetivamente a dizer (com o código que você postou) "A atual página resulta em um erro 403", mas então você redirecionar para uma página totalmente diferente. Adicionar o cabeçalho 403 para http://www.queensberry.com/restrictedcontent/ e você deve ser Boa. Você também precisa fazer o mesmo com o cabeçalho 404 também.

Se (HTTP / 1.1 403), em seguida, Navegador Web (Firefox, IE, Chrome, ...) irá ignorar qualquer que seja

Localização:. (Bla bla bla) é

Não acreditam?

Suponha :: você sabe como produzir código de erro 403 do seu site Joomla. (Quero dizer joomla_site / bla-bla-bla :: que produzem código de erro 403)

Vamos perguntar se Web Server dá (com base em seu arquivo error.php) como segue:

... HTTP / 1.1 403 Restricted Content Localização: http://www.queensberry.com/restrictedcontent/ ...

Aqueles são direito baseado em seu arquivo error.php (I média seu arquivo error.php funciona como você deseja )

- Verifique com telnet 80

Vamos tentativa

c: \ telnet your_host: 80

GET bla-bla-bla HTTP / 1.1

Anfitrião: joomla_site

- Espero que este cumprir a sua curiosidade: -)

repito novamente:

Se (HTTP / 1.1 403), em seguida, Navegador Web (Firefox, IE, Chrome, ...) irá ignorar qualquer que seja

Localização:. (Bla bla bla) é

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