Как я могу остановить / перенаправить URL-адрес, не поддерживающий поисковую оптимизацию, на его псевдоним URL-адреса в OpenCart 2.x?

Как я могу перенаправить URL-адрес, не поддерживающий поисковую оптимизацию, на псевдоним URL-адреса навсегда (301) в OpenCart 2.x? Например, для меня оба URL работают http://example.com/index.php?route=account/login и http://example.com/login

Я хотел бы перенаправить 301, когда какой-либо пример URL-адреса {точка} com / index.php? Route = account / login на их соответствующий псевдоним URL-адреса пример URL-адреса {точка} com / login.


person Raghwendra Ojha    schedule 22.01.2016    source источник
comment
php - просто переверните код seo_url.php. В oc он отвечает за поиск маршрута для определенного ключевого слова sef, теперь у вас есть маршрут, поиск ключевого слова sef и перенаправление на этот путь.   -  person Nikhil Chaudhary    schedule 22.01.2016
comment
Не могли бы вы поделиться кодом? Я немного новичок в открытой тележке.   -  person Raghwendra Ojha    schedule 24.01.2016
comment
У меня та же проблема, и это отлично помогает мне в версии 2.1, stackoverflow.com/questions/32432890/   -  person Romain    schedule 20.07.2017


Ответы (1)


Я думаю, что следующее: vqmod_seo_url.xml решит вашу проблему

<modification>
    <id>seo_url_core</id>
    <version>1.4.x and above</version>
    <vqmver required="true">2.x.x</vqmver>

    <file name="catalog/controller/common/seo_url.php">
        <operation error="skip">
            <search position="before" offset="0">
        <![CDATA[
        public function index() {
        ]]>
            </search>
            <add>
        <![CDATA[
                /* SEO Custom URL */
                private $url_list = array (
                    'common/home'       => '',
                    'checkout/cart'     => 'cart',
                    'account/register'  => 'register',
                    'account/wishlist'  => 'wishlist',
                    'checkout/checkout' => 'checkout',
                    'account/login'     => 'login',
                    'product/special'   => 'special',
                    'affiliate/account' => 'affiliate',
                    'checkout/voucher'  => 'voucher',
                    'product/manufacturer' => 'brand',
                    'account/newsletter'   => 'newsletter',
                    'account/order'        => 'order',
                    'account/account'      => 'account',
                    'information/contact'  => 'contact',
                    'account/return/insert' => 'return',
                    'information/sitemap'   => 'sitemap',
                    );
                /* SEO Custom URL */
        ]]>
            </add>
        </operation>
        <operation error="skip">
            <search position="before">
        <![CDATA[
        if (!isset($this->request->get['route'])) {
        ]]>
            </search>
            <add>
        <![CDATA[
        /* SEO Custom URL */
                    if ( $_s = $this->setURL($this->request->get['_route_']) ) {
                            $this->request->get['route'] = $_s;
                }/* SEO Custom URL */
        ]]>
            </add>
        </operation>
        <operation error="skip">
            <search position="before" offset="3">
        <![CDATA[
        if ($url) {
        ]]>
            </search>
            <add>
        <![CDATA[
         /* SEO Custom URL */
                  if( $_u = $this->getURL($data['route']) ){
                    $url .= $_u;
                    unset($data[$key]);
                  }
                 /* SEO Custom URL */ 
        ]]>
            </add>
        </operation>
        <operation error="skip">
            <search position="after" index="1" offset="2">
        <![CDATA[
        return $link;
        ]]>
            </search>
            <add>
        <![CDATA[
         /* SEO Custom URL */
                    public function getURL($route) {
                            if( count($this->url_list) > 0) {
                                 foreach ($this->url_list as $key => $value) {
                                    if($route == $key) {
                                        return '/'.$value;
                                    }
                                 }
                            }
                            return false;
                    }
                    public function setURL($_route) {
                            if( count($this->url_list) > 0 ){
                                 foreach ($this->url_list as $key => $value) {
                                    if($_route == $value) {
                                        return $key;
                                    }
                                 }
                            }
                            return false;
                    }/* SEO Custom URL */ 
        ]]>
            </add>
        </operation>
    </file>

</modification>
person zed Blackbeard    schedule 28.01.2016
comment
Спасибо @ zed-blackbeard за то, что поделился vqmod для seo url. у меня есть решение для этого. - person Raghwendra Ojha; 29.06.2017