In ./app/code/local/INPUTANAME/RewriteAfterDelete/etc/config.xml put
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<INPUTANAME_RewriteAfterDelete>
<version>0.0.1</version>
</INPUTANAME_RewriteAfterDelete>
</modules>
<global>
<models>
<inputaname_rewriteafterdelete>
<class>INPUTANAME_RewriteAfterDelete_Model</class>
</inputaname_rewriteafterdelete>
</models>
<events>
<catalog_product_delete_after>
<observers>
<inputaname_rewriteafterdelete>
<class>inputaname_rewriteafterdelete/observer</class>
<method>rewriteDelete</method>
<type>singleton</type>
</inputaname_rewriteafterdelete>
</observers>
</catalog_product_delete_after>
</events>
</global>
</config>
In ./app/code/local/INPUTANAME/RewriteAfterDelete/Model/Observer.php
<?php
class INPUTANAME_RewriteAfterDelete_Model_Observer
{
public function rewriteDelete(Varien_Event_Observer $observer)
{
$product = $observer->getEvent()->getProduct();
$storeId = Mage::app()->getStore()->getStoreId();
$categoryIds = $product->getCategoryIds();
if(count($categoryIds) ){
$categoryIds = $this->getActiveCategoryIds($categoryIds);
}
$requestPath = '';
if($product->getUrlPath() != ""){
$requestPath = $product->getUrlPath();
}else{
$requestPath = $product->getUrlKey();
}
if(count($categoryIds) ){
$firstCategoryId = $categoryIds[0];
$category = Mage::getModel('catalog/category')->load($firstCategoryId);
if($category->getProductCount()){
$newpage = $category->getUrlPath();
}else{
$newpage = $category->getParentCategory()->getUrlPath();
}
Mage::getModel('core/url_rewrite')
->setIsSystem(0)
->setStoreId($storeId)
->setOptions('RP')
->setTargetPath($newpage)
->setIdPath(uniqid(delete_))
->setRequestPath($requestPath)
->save();
}else{
Mage::getModel('core/url_rewrite')
->setIsSystem(0)
->setStoreId($storeId)
->setOptions('RP')
->setTargetPath('index.php')
->setIdPath(uniqid(delete_))
->setRequestPath($requestPath)
->save();
}
}
protected function getActiveCategoryIds($catIds){
$catCollection = Mage::getResourceModel('catalog/category_collection')
->addAttributeToSelect('entity_id')
->addAttributeToFilter('entity_id', $catIds)
->addIsActiveFilter();
return $catCollection->getAllIds();
}
}
In ./app/etc/modules/INPUTANAME_RewriteAfterDelete.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<INPUTANAME_RewriteAfterDelete>
<version>0.0.1</version>
</INPUTANAME_RewriteAfterDelete>
</modules>
<global>
<models>
<inputaname_rewriteafterdelete>
<class>INPUTANAME_RewriteAfterDelete_Model</class>
</inputaname_rewriteafterdelete>
</models>
<events>
<catalog_product_delete_after>
<observers>
<inputaname_rewriteafterdelete>
<class>inputaname_rewriteafterdelete/observer</class>
<method>rewriteDelete</method>
<type>singleton</type>
</inputaname_rewriteafterdelete>
</observers>
</catalog_product_delete_after>
</events>
</global>
</config>