Domanda

Sto cercando di reindirizzare all'URL personalizzato se un certo URL è abbinato usando l'evento: controller_action_predispatch

A> Evento di registrazione: controller_action_predispatch

<frontend>
    <events>
        <controller_action_predispatch>
            <observers>
                <redirect_controller_action_predispatch>
                    <class>redirect/observer</class>
                    <method>controllerActionPredispatch</method>
                </redirect_controller_action_predispatch>
            </observers>
        </controller_action_predispatch>
    </events>
</frontend>

B> Implementazione del modello Observer

<?php
class MagePsycho_Redirect_Model_Observer
{
    public function controllerActionPredispatch(Varien_Event_Observer $observer)
    {
        $action         = $observer->getControllerAction();
        $request        = $action->getRequest();
        $requestUrl     = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $request->getRequestUri();

        if (stripos($requestUrl, '/' . 'old-404-url-key') !== false) {
            $redirectUrl = Mage::getUrl('new-url-key');
            Mage::log('redirect-matched::' . $redirectUrl);
            $action->getResponse()->setRedirect($redirectUrl, 301);
            $action->getRequest()->setDispatched(true);
            return;
        }
    }
}

Il codice sopra funziona bene in LocalHost ma non sul server live in cui è attiva la cache a pagina intera + la memorizzazione nella cache APC (Magento EE 1.13).

Cosa mi manca, qualcosa deve essere controllato in caso di cache a pagina intera + APC attivato?

Qualsiasi aiuto è apprezzato.

MODIFICARE
Il problema del reindirizzamento è solo per l'errore 404. Se provo a reindirizzare una pagina non esistente (cioè 404) su una pagina valida, il reindirizzamento non funziona.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top