ยินดีต้อนรับสู่ Magento.StackExchange!
น่าเสียดายที่ไม่มีโมดูลนอกกรอบที่จะทำสิ่งนี้ให้คุณ
ฉันขอแนะนำให้คุณพิจารณาเป็นตัวเลือก ผู้ใช้ของคุณไม่ได้โง่ (ไม่ว่าพวกเขาจะทำตัวโง่) - การวิเคราะห์อีคอมเมิร์ซมานานหลายปีแสดงให้ฉันเห็นว่าเกือบ 80% ของเวลาผู้ใช้ที่เข้าถึง 404 จะกดแถบการค้นหาในไซต์ภายในไม่กี่วินาที ใช้ความพยายามในการแก้ไขการค้นหาไซต์ของคุณด้วยการจัดหมวดหมู่ที่ดีขึ้น (อ่าน: การบรรจุคำหลัก)
ดัชนีของ Google ไม่ได้เป็นอย่างถาวร หากคุณกลัวยุค 404 ลองพิจารณาหน้าเว็บ 404 ของคุณเอง เพิ่มโอกาสในการแปลงของคุณโดยเสนอคูปองส่วนลด 5-10% สำหรับผู้ที่ไม่สะดวกโดยกด 404 หรือดีกว่ายังอย่าปิดใช้งานหน้าผลิตภัณฑ์ ค่อนข้างปิดการใช้งานความสามารถในการซื้อ (เช่นตั้งเป็นหมด) และให้บล็อกคงที่ / ลิงค์ที่เชื่อมโยงไปยังหน้า / หมวดหมู่ที่เกี่ยวข้อง
ฉันไม่สนใจแค่ให้รหัสเพราะ internets:
ที่การเขียนโค้ดโมดูลที่ง่ายที่สุดด้วยผู้สังเกตการณ์ที่จะจัดการสิ่งนี้ให้คุณนั้นเป็นเรื่องเล็กน้อย:
การกำหนดเหตุการณ์ใน 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 / รหัส / ท้องถิ่น / yourcompany / YourModule / รุ่น / 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() */);
}
}
}