Back to top

Autore Topic: Componente redirect nativo joomla: ma è veramente utile ?  (Letto 5554 volte)

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Un saluto a tutti.


Se non sbaglio, dalla versione 1.6 joomla è stato inserito questo nuovo componente e il suo relativo plugin.


Dopo un pò di verifiche che ho eseguito su tale componente, sarei arrivato alla conclusione che non serve quasi a niente.


L' utilità vera di tale componente è che intercetta e memorizza gli errori 404 (url inesistente) presenti nel nostro sito e, in alcuni casi, memorizza la pagina di riferimento da dove è pervenuto il link con errore 404.


E questa è , come dicevo, l' effettiva utilità del componente.


A questo punto, occorrerà intervenire sul link 404 per fare in modo che non generi più l' errore (reindirizzandolo, per esempio con un redirect 301, da htaccess).


Se infatti viene utilizzato il componente stesso per il reindirizzamento, l' url con errore 404 in effetti viene correttamente reindirizzato all' url stabilito da noi nel componente, e quindi non comparirà più la pagina d'errore 404 impostata per il nostro sito.


Questo farebbe pensare che sia tutto a posto ma in realtà, tutti i link reindirizzati dal componente, nonostante portino a pagine esistenti, continuano a generare errore 404.


Pertanto, i motori di ricerca, per esempio google , continueranno a ricevere errori 404 dai link reindirizzati. Ciò viene confermato anche dagli strumenti per webmaster di google->Salute->errori di scansione.


Di seguito, riporto il codice del plugin redirect nativo di joomla che in effetti confermerebbe questa situazione:


Codice: [Seleziona]

<?php
/**
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */


defined('JPATH_BASE') or die;


/**
 * Plugin class for redirect handling.
 *
 * @package Joomla.Plugin
 * @subpackage System.redirect
 */
class plgSystemRedirect extends JPlugin
{
/**
 * Object Constructor.
 *
 * @access public
 * @param object The object to observe -- event dispatcher.
 * @param object The configuration object for the plugin.
 * @return void
 * @since 1.0
 */
function __construct(&$subject$config)
{
parent::__construct($subject$config);


// Set the error handler for E_ERROR to be the class handleError method.
JError::setErrorHandling(E_ERROR'callback', array('plgSystemRedirect''handleError'));
}


static function handleError(&$error)
{
// Get the application object.
$app JFactory::getApplication();


// Make sure the error is a 404 and we are not in the administrator.
if (!$app->isAdmin() and ($error->getCode() == 404))
{
// Get the full current URI.
$uri JURI::getInstance();
$current $uri->toString(array('scheme''host''port''path''query''fragment'));


// Attempt to ignore idiots.
if ((strpos($current'mosConfig_') !== false) || (strpos($current'=http://') !== false)) {
// Render the error page.
JError::customErrorPage($error);
}


// See if the current url exists in the database as a redirect.
$db JFactory::getDBO();
$db->setQuery(
'SELECT '.$db->quoteName('new_url').', '.$db->quoteName('published').
' FROM '.$db->quoteName('#__redirect_links') .
' WHERE '.$db->quoteName('old_url').' = '.$db->quote($current),
01
);
$link $db->loadObject();


// If a redirect exists and is published, permanently redirect.
if ($link and ($link->published == 1)) {
$app->redirect($link->new_urlnullnulltruefalse);
}
else
{
$referer = empty($_SERVER['HTTP_REFERER']) ? '' $_SERVER['HTTP_REFERER'];


$db->setQuery('SELECT id FROM ' $db->quoteName('#__redirect_links') . '  WHERE old_url= ' $db->quote($current));
$res $db->loadResult();
if(!$res) {


// If not, add the new url to the database.
 $query $db->getQuery(true);
 $query->insert($db->quoteName('#__redirect_links'), false);
 $columns = array( $db->quoteName('old_url'),
$db->quoteName('new_url'),
$db->quoteName('referer'),
$db->quoteName('comment'),
$db->quoteName('hits'),
$db->quoteName('published'),
$db->quoteName('created_date')
);
$query->columns($columns);
    $query->values($db->Quote($current). ', '$db->Quote('').
   ' ,'.$db->Quote($referer).', '.$db->Quote('').',1,0, '.
  $db->Quote(JFactory::getDate()->toSql())
);


$db->setQuery($query);
$db->query();


} else {
// Existing error url, increase hit counter
$query $db->getQuery(true);
$query->update($db->quoteName('#__redirect_links'));
$query->set($db->quoteName('hits').' = '.$db->quoteName('hits').' + 1');
$query->where('id = '.(int)$res);
$db->setQuery((string)$query);
$db->query();
}
// Render the error page.
JError::customErrorPage($error);
}
}
else {
// Render the error page.
JError::customErrorPage($error);
}
}
}
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline ZioPal

  • Abituale
  • ****
  • Post: 806
  • Sesso: Maschio
  • SWM - Servizi Web Marketing Roma
    • Mostra profilo
Re:Componente redirect nativo joomla: ma è veramente utile ?
« Risposta #1 il: 12 Nov 2012, 10:46:42 »
Ciao Alexdi,
questa cosa che dici è interessante ed inquietante, non lo uso molto perché di solito mi poggio su componenti SEF per il redirect, ma quello del redirect nativo è comunque un metodo che suggerivo in molti casi.

Cercherò di fare attenzione e verificare il comportamento reale.

Maurizio ZioPal
Realizzazione e posizionamento siti web Roma
Realizzazione Siti Web Roma Twitter: @ZioPal Facebook: Maurizio Palermo

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Re:Componente redirect nativo joomla: ma è veramente utile ?
« Risposta #2 il: 12 Nov 2012, 18:18:32 »
Ciao ZioPal e grazie per la tua replica.


Sto ancora facendo prove ma mi pare proprio così.


Infatti anche il codice sembrerebbe confermarlo.


Il plugin, se non ho letto male il codice , prima di tutto, controlla se è presente un errore 404 , anche su url già presenti in tabella e con reindirizzamento impostato. Dopodichè, verifica se esiste in tabella l' url di reindirizzamento. Se esiste esegue il reindirizzamento alrimenti memorizza l' url che ha generato il 404 , che poi dovrà essere trattato a mano.


Ti aggiornerò sulle prove.
Ciao.
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline lapo_78

  • Esploratore
  • **
  • Post: 87
    • Mostra profilo
Re:Componente redirect nativo joomla: ma è veramente utile ?
« Risposta #3 il: 03 Gen 2013, 10:57:44 »
scusate ho fatto una prova e se disabilito il redirect su una determinata pagina l'errore di google che mi ritorna è il 404, in alternativa se lo abilito mi da il 301, quindi il funzionamento dovrebbe essere giusto?!?!

Offline ZioPal

  • Abituale
  • ****
  • Post: 806
  • Sesso: Maschio
  • SWM - Servizi Web Marketing Roma
    • Mostra profilo
Re:Componente redirect nativo joomla: ma è veramente utile ?
« Risposta #4 il: 03 Gen 2013, 11:05:51 »
Ciao lapo_78,
la prova che hai fatto era semplice e significativa e dovrebbe indicare che funziona correttamente.

Maurizio ZioPal
Realizzazione e posizionamento siti web Roma
Realizzazione Siti Web Roma Twitter: @ZioPal Facebook: Maurizio Palermo

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Re:Componente redirect nativo joomla: ma è veramente utile ?
« Risposta #5 il: 03 Gen 2013, 17:52:37 »
Ciao lapo_78.


Non so che dire in merito ai tuoi riscontri.


Nel mio caso, google mi segnalava errori 404 su alcune pagine confermati da prove. Reindirizzavo correttamente tali link con il plugin ed in effetti le prove risultavano regolari con reindirizzamento ok.


Rimuovevo quindi tali link segnalati con errore 404 da google solo che, nonostante reindirizzamento attivo tramite plugin, dopo pochi giorni google me li segnalava di nuovo.


Ne ho dedotto che il plugin non fa proprio il suo dovere.


Tantè che il codice php del plugin, parte in ogni caso con la verifica della presenza di errore 404 e poi, successivamente, se il link è presente in db , reindirizza ma, da quello che ne ho dedotto, dopo aver comunque generato un 404.


E questo è il problema. Il link viene si reindirizzato (301 o 303) ma dopo comunque aver generato un 404.


E forse a google ciò non piace.


Comunque, dopo che ho reindirizzato 301 da htaccess e quindi a monte del plugin, tutto ok.







Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

Offline lapo_78

  • Esploratore
  • **
  • Post: 87
    • Mostra profilo
Re:Componente redirect nativo joomla: ma è veramente utile ?
« Risposta #6 il: 09 Gen 2013, 16:46:17 »
Alla fine anche io preferisco reindirizzare da htaccess, risolvo più link errati contemporanemaente. Però voglio fare un'ulteriore prova seguendo il caso che hai descritto.

 



Web Design Bolzano Kreatif