Bienvenue sur Magento.StackExchange!
Malheureusement, aucun module prêt à l'emploi ne le fera pour vous.
Je vous encourage fortement à reconsidérer cette option. Vos utilisateurs ne sont pas stupides (même s'ils se comportent bêtement) - de nombreuses années d'analyse du commerce électronique m'ont montré que, près de 80% du temps, les utilisateurs atteignant un 404 atteindront la barre de recherche sur site en quelques secondes. Mettez vos efforts à corriger votre recherche de site avec une meilleure catégorisation (lire: bourrage de mots clés).
Les index Google ne sont pas éternels. Si vous avez peur des 404, pensez à embellir votre page 404 elle-même. Augmentez votre potentiel de conversion en offrant un coupon de réduction de 5 à 10% à ceux qui ne sont pas gênés en frappant un 404. Ou, mieux encore, ne désactivez pas les pages de produits. Désactivez plutôt la possibilité d'acheter (par exemple, définissez comme en rupture de stock) et fournissez un bloc / lien statique qui renvoie à la page / catégorie appropriée.
Je m'en fiche, donnez-moi juste des codes car les internets:
Au plus simple, coder un module avec un observateur qui s'en occupera pour vous est trivial:
Désignation de l'événement dans 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() */);
}
}
}