Frage

Meine alte Website hatte Zehntausende nicht mehr gültiger Produkte mit urls wie http://example.com?product_id=123456.

Sie sind alle suchmaschinenindiziert und werden jetzt in Magento auf 404 aufgelöst.Ich kann unmöglich für jede einzelne eine Weiterleitung erstellen.

Wie bringe ich sie dazu, auf meine Homepage zu gelangen?

War es hilfreich?

Lösung

In diesem Fall können Sie verwenden ereignis / Beobachter und auf Veranstaltung controller_front_init_before feuern Sie einen Beobachter ab.

Zuerst denke ich das ihre alte Produkt-ID und Ihre neue Produkt-ID sind identisch.

Darauf observer check query string($_SERVER['ABFRAGE_ZEICHENFOLGE']) content

?product_id=Produkt-ID Muster in url dann grundlegend davon redirect to current system product url.

Beispiel:

Annehmen,

URL des alten Systemprodukts: http://example.com?product_id=123456

Neue Systemprodukt-URL: http://example.com/abx.html

mein Code wird umgeleitet http://example.com?product_id=123456 zu http://example.com/abx.html verwenden der 301-Umleitung.

301-Weiterleitung, Sie werden das SEO-Problem lösen.

Hier konfig.xml-Code:

 <global>
    <models>
      <magento67130>
        <class>StackExchange_Magento67130_Model</class>
        <resourceModel>magento67130_mysql4</resourceModel>
      </magento67130>
    </models>
    <events>
      <controller_front_init_routers> <!-- identifier of the event we want to catch -->
        <observers>
          <controller_front_init_before_handler> <!-- identifier of the event handler -->
            <type>model</type> <!-- class method call type; valid are model, object and singleton -->
            <class>magento67130/observer</class> <!-- observers class alias -->
            <method>redirectionProduct</method>  <!-- observer's method to be called -->
          </controller_front_init_before_handler>
        </observers>
      </controller_front_init_routers>
    </events>
  </global>

Beobachter.PHP-Code ist unten:

<?php
class StackExchange_Magento67130_Model_Observer
{

    public function redirectionProduct(Varien_Event_Observer $observer)
    {
        return;
        if($this->_getQueryString()){
            print_r($this->_getQueryString());

                // Check query string exits in product_id
            if(strpos($this->_getQueryString(),'product_id=')!== false){
                /* get Product ifd from query string */
                 $productid=str_replace('product_id=','',$this->_getQueryString());
                if(!empty($productid)):
                $product= Mage::getModel('catalog/product')->load($productid);
                 if ($product->getId()) {
                    echo $product->getProductUrl();
                     Mage::app()->getResponse()
                        ->setRedirect($product->getProductUrl(), 301)
                             ->sendResponse();

                             return;
                 }
                endif;
            }

        }
        //die();

    }
    /* Check here Request query string */
    protected function _getQueryString()
        {
            if (!empty($_SERVER['QUERY_STRING'])) {
                $queryParams = array();
                parse_str($_SERVER['QUERY_STRING'], $queryParams);
                $hasChanges = false;
                foreach ($queryParams as $key => $value) {
                    if (substr($key, 0, 3) === '___') {
                        unset($queryParams[$key]);
                        $hasChanges = true;
                    }
                }
                if ($hasChanges) {
                    return http_build_query($queryParams);
                } else {
                    return $_SERVER['QUERY_STRING'];
                }
            }
            return false;
        }
}

Andere Tipps

you have to create one little custom extension to redirect if product is not found in your database

here i have given working solution and its perfect worked for me

How to forward all the 404 Magento pages to the front page?

hope this will also work for you.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top