it-swarm.dev

restituisce l'intestazione 404 con la pagina 404

In questa documentazione

http://docs.joomla.org/Creating_a_Custom_404_Error_Page

si consiglia di reindirizzare a una pagina 404 personalizzata reindirizzando. Ciò porta alla pubblicazione della pagina finale su un codice Header 200.

Tuttavia, questo articolo sugli strumenti per i webmaster

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

richiede che la pagina di errore 404 restituisca un'intestazione 404.

Ho provato a includere nuovamente Joomla dalla pagina di errore. A corto di usare curl per ottenere la pagina personalizzata, c'è qualcos'altro che posso fare?

4
jdog

Questo si chiama soft 404 mentre stai reindirizzando a un URL diverso. Quindi la risposta 200 dopo il reindirizzamento è corretta, il che, sì, causa problemi ai robot dei motori di ricerca nel determinare se il contenuto è non trovato :

Stavo per suggerire, forzando un 404 codice di risposta a header chiama in error.php file come questo:

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

Tuttavia, questo non funzionerà, principalmente perché il comportamento del browser è di non andare oltre o non definito per quanto ne so (vedi 4xx errori , 404 ) che è in conflitto con location . (Anche alcuni Chrome & IE's et al ignorano il contenuto fornito dal server quando vedono un codice 404 e presentano i loro "suggerimenti").

Quindi, sembrerebbe che per ottenere contenuti personalizzati da un articolo e conservare un 404 sia necessario ottenere quel contenuto e includerlo nella tua pagina di errore (presumo che tu voglia farlo in modo da ottenere il tuo modello, struttura del menu ecc. ).

2
Craig

Ecco cosa ho finito per mettere in cima al mio errore.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

Soluzione abbastanza semplice per gli URL soft 404 personalizzati di Joomla che non restituiscono l'intestazione 404:

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

Visibile su: https://www.its-acoustique.fr/john-doe

0
Bruno