Domanda

Il mio vecchio sito aveva decine di migliaia di prodotti non più lunghi con URL come http://example.com?product_id=123456.

Sono tutti indicizzati dal motore di ricerca e ora risolvono fino a 404 in Magento.Non riesco a creare un reindirizzamento per ogni singolo.

Come posso ottenerli a risolversi nella mia home page?

È stato utile?

Soluzione

In questo caso, è possibile utilizzare evento / observer e sull'evento controller_front_init_before fuoco un osservatore.

Prima immagino che il tuo vecchio ID prodotto e il nuovo ID del prodotto sono uguali .

su quel observer check query string ($ _ server ['query_string']) content

? Prodotto_id= ProductID Modello in url THEN BASIC di questo redirect to current system product url.

Esempio:

Supponiamo,

Old System System URL del prodotto: http://example.com?product_id=123456

Nuovo sistema URL del prodotto: http://example.com/abx.html

Il mio codice verrà reindirizzando http://example.com?product_id=123456 a http://example.com/abx.html utilizzando 301 Reindirizzamento.

.

301 Reindirizzamento, si risolverai il problema SEO.

qui config.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>
.

Il codice Observer.php è inferiore:

<?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;
        }
}
.

Altri suggerimenti

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top