it-swarm.dev

404 codici HTTP in Joomla

come si fa a restituire a Joomla un codice "reale" 404? Non riesco a capire come farlo accadere! Sono cambiato htaccess.txt a .htaccess, abilitato il plug-in di sistema/reindirizzamento e attivato la riscrittura degli URL nelle opzioni globali di Joomla.

Tuttavia, qualsiasi URL falso che scrivo reindirizza semplicemente alla pagina iniziale, nemmeno alla pagina di errore predefinita di Joomla.

Questo succede anche sul sito demo di Joomla qui: https://demo.joomla.org/badurl_fake

Test ulteriormente:

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

Ciò si traduce in un URL non valido che restituisce un vero errore 404

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

Ciò si traduce in un URL non valido che restituisce un vero errore 404

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: YES

Ciò si traduce in un URL non valido che restituisce un vero errore 404

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

Ciò comporta un URL errato che restituisce l'utente alla home page

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

Ciò comporta un URL errato che restituisce l'utente alla home page

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: NO

Ciò comporta un URL errato che restituisce l'utente alla home page

Quindi mi sembra che l'htaccess sia il colpevole qui. Nel mio test, ogni volta che è presente .htacess, il 404 viene reindirizzato alla pagina dell'indice.

7
user101289

Questo non è un errore ma un comportamento previsto. Se accedi a Componenti> Reindirizzamento nell'interfaccia dell'amministratore di Joomla, vedrai un elenco di tutte le richieste di URL che generano un 404. Joomla le registra automaticamente in questo componente e reindirizza la richiesta alla home page.

Il motivo per cui è duplice, in primo luogo è prevenire un'esperienza utente negativa mitigando le pagine di errore e, in secondo luogo, fornire un mezzo per consentire all'amministratore di un sito Web di tracciare e reindirizzare manualmente agli endpoint desiderati. Ho allegato un link ai documenti di Joomla che spiega in modo più dettagliato.

http://docs.joomla.org/Help33:Components_Redirect_Manager

2
Brian Bolli

Puoi personalizzare l'errore 404 (esempio mostra una pagina personalizzata o invia altrove rispetto alla homepage) aggiungendo un PHP al tuo modello, chiamalo error.php e posizionalo nella radice del modello (accanto a index.php del modello).

All'interno di quel file puoi indicare cosa fare, ad esempio inviarlo da qualche parte nel tuo sito (aggiornamento /SOMEWHEREINYOURSITE con l'URL desiderato):

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

//example of a way to output the error code:
//echo $this->error->getCode();

if (($this->error->getCode()) == '404') {
    header('Location: /SOMEWHEREINYOURSITE');
}
?>

Metodo 2:

Sapendo che stai usando il file .htaccess (che presumo tu stia usando un server Apache), puoi aggiungere una definizione per cosa fare dell'errore 404.

Posizionalo nella parte superiore del file .htaccess:

ErrorDocument 404 /SOMEWHEREINYOURSITE

Come con il metodo precedente, aggiorna /SOMEWHEREINYOURSITE con l'URL desiderato.

2
jackJoe

L'ho visto di recente su alcuni siti e ho appena scoperto che succede quando il sito è in modalità offline e si è connessi al frontend.

Quando il sito è online e si crea un URL, viene visualizzata la pagina di errore standard con codice di stato.

Quando il sito è offline e si è connessi, si viene reindirizzati a /index.php con un 303 vedere altro codice di stato.

1
Robert Went