Bem-vindo ao Magento.StackExchange!
Infelizmente, não existe um módulo pronto para o uso que faça isso por você.
É altamente recomendável que você reconsidere isso como uma opção. Seus usuários não são estúpidos (não importa o quão estupidamente eles se comportem) - muitos e muitos anos de análise de comércio eletrônico me mostraram que, quase 80% do tempo, os usuários que alcançam um 404 atingem a barra de pesquisa no local em segundos. Esforce-se para corrigir a pesquisa no site com uma melhor categorização (leia-se: preenchimento de palavras-chave).
Os índices do Google não são para sempre. Se você tem medo de 404, considere criar sua própria página 404. Aumente o seu potencial de conversão oferecendo um cupom de desconto de 5 a 10% para os inconvenientes ao acessar o 404. Ou, melhor ainda, não desative as páginas do produto. Em vez disso, desative a capacidade de compra (por exemplo, definida como fora de estoque) e forneça um bloco / link estático vinculado à página / categoria relevante.
Eu não me importo, apenas me dê códigos porque internets:
A codificação mais simples de um módulo com um observador que manipulará isso para você é trivial:
Designação de evento no config.xml:
<global>
<events>
<controller_action_postdispatch_catalog_product_view>
<observers>
<yourmodule_capcpv>
<class>YourCompany_YourModule_Model_Observer</class>
<method>catalogProductViewPostdispatch</method>
</yourmodule_capcpv>
</observers>
</controller_action_postdispatch_catalog_product_view>
</events>
</global>
app / code / local / YourCompany / YourModule / Model / Observer.php:
<?php
class YourCompany_YourModule_Model_Observer
{
public function catalogProductViewPostdispatch($observer)
{
$controller = $observer->getEvent()->getControllerAction();
$product = Mage::registry('current_product');
if($product->getStatus()!=Mage_Catalog_Model_Product_Status::STATUS_ENABLED){
$action->getResponse()->setRedirect(/* your redirect URL here with Mage::getUrl() */);
}
}
}