it-swarm-es.tech

devolver encabezado 404 con página 404

En esta documentación

http://docs.joomla.org/Creating_a_Custom_404_Error_Page

hay consejos para redirigir a una página 404 personalizada mediante la redirección. Esto lleva a la página final que se sirve en un código de encabezado 200.

Sin embargo, este artículo de herramientas para webmasters

https://support.google.com/webmasters/answer/2409443?ctx=MCE&ctx=S4

requiere que la página de error 404 devuelva un encabezado 404.

He intentado incluir Joomla nuevamente desde la página de error. A menos que use curl para obtener la página personalizada, ¿hay algo más que pueda hacer?

4
jdog

Esto se llama soft 404 mientras redirige a una URL diferente. Por lo tanto, la respuesta 200 después de la redirección es correcta, lo que sí causa problemas a los robots de los motores de búsqueda al determinar si el contenido no se encuentra :

Iba a sugerir, forzando un 404 código de respuesta a header llamar a error.php archivo como este:

if (($this->error->getCode()) == '404') {
    header('Location: /index.php?option=com_content&view=article&id=75', true, 404);
    exit;
}

Sin embargo, esto no funcionará, principalmente porque el comportamiento del navegador es no ir más allá o indefinido hasta donde puedo decir (ver Errores 4xx , 404 ) que entra en conflicto con location . (También algunos Chrome & IE's et al ignoran el contenido proporcionado por el servidor cuando ven un código 404 y presentan sus propias "sugerencias").

Por lo tanto, parece que para obtener contenido personalizado de un artículo y retener un 404, debe obtener ese contenido e incluirlo en su página de error (supongo que desea hacer esto para obtener su plantilla, estructura de menú, etc. ).

2
Craig

Esto es lo que terminé colocando en la parte superior de mi error.php

<?php
/**
 * @package     Joomla.Site
 * @subpackage  Template.system
 *   * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights     reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
 defined('_JEXEC') or die;
if (($this->error->getCode()) == '404') {
    header('HTTP/1.0 404 Not Found');
    $ch = curl_init( JURI::root() . '/404');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    echo curl_exec($ch);
exit;
}
2
jdog

Solución bastante fácil para las URL 404 suaves personalizadas de Joomla que no devuelven el encabezado 404:

https://www.joomlashack.com/blog/joomla/custom-404/

Visible en: https://www.its-acoustique.fr/john-doe

0
Bruno