Pregunta

Estoy tratando de redirigir a URL personalizada si cierta URL se combina con el evento: controller_action_predispatch

A> Evento de registro: controlador_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> Implementación del modelo 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;
        }
    }
}

El código anterior funciona bien en localhost pero no en el servidor en vivo donde se enciende el caché de caché de página completa + APC en caché (Magento EE 1.13).

¿Qué me estoy perdiendo, cualquier cosa debe verificarse en caso de cache de la página completa + APC activado?

Se agradece cualquier ayuda.

EDITAR
El problema de redirección es solo para un error 404. Si trato de redirigir alguna página no existente (es decir, 404 página) a una página válida, la redirección no funciona.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top