Question

Mon ancien site avait des dizaines de milliers de produits plus valides plus longs avec des URL comme http://example.com?product_id=123456.

Ils sont tous indexés par les moteurs de recherche et sont désormais résolus en 404 dans Magento.Je ne peux pas créer une redirection pour chacun.

Comment puis-je les amener à accéder à ma page d'accueil ?

Était-ce utile?

La solution

Dans ce cas, vous pouvez utiliser événement/observateur et sur événement controller_front_init_before renvoyer un observateur.

D'abord, je suppose que votre ancien identifiant de produit et votre nouvel identifiant de produit sont identiques.

Sur ça observer check query string($_SERVEUR['QUERY_STRING']) content

?product_id=productID modèle in url alors c'est la base de ça redirect to current system product url.

Exemple:

Supposer,

Ancienne URL du produit du système : http://example.com?product_id=123456

URL du nouveau produit système : http://example.com/abx.html

mon code sera redirigé http://example.com?product_id=123456 à http://example.com/abx.html en utilisant la redirection 301.

Redirection 301, vous résoudrez le problème de référencement.

Ici le code config.xml :

 <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>

Le code Observer.php est ci-dessous :

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

Autres conseils

vous devez créer une petite extension personnalisée pour rediriger si le produit n'est pas trouvé dans votre base de données

ici, j'ai donné une solution de travail et c'est parfait pour moi

Comment transférer toutes les 404 pages Magento vers la première page ?

j'espère que cela fonctionnera également pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top