Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] 301 редирект на чпу


Recommended Posts

Привет, всем!)

 

Скажите, насколько дико добавлять такой код: (вкратце он редиректит на каноническую страницу если пользователь попал не на неё)

		if(is_array($this->data['links'])) {
			$page = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
			foreach ($this->data['links'] as $key => $link) {
				if($link['rel'] == 'canonical' && $link['href'] && $page != $link['href']) {
					header("HTTP/1.1 301 Moved Permanently");
					header("Location: ".$link['href']); 
					exit();
				}
			}
		}

в /catalog/controller/common/header.php для редиректа со страниц типа index.php?route=product/product&path=1&product_id=2 на ЧПУ?

 

И если есть другие варианты, поделитесь)

Надіслати
Поділитися на інших сайтах


Очень дико

Надо как в seo_pro.php

    private function validate()
    {
        $cnt_cnt = $this->config->get('asc_cnt_cnt');
        if (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {
            return;
        }
        if (empty($this->request->get['route'])) {
            $this->request->get['route'] = 'common/home';
        }
        if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
            return;
        }
        if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
            $config_url = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);
            $url        = str_replace('&', '&', ltrim($this->request->server['REQUEST_URI'], '/'));
            $seo        = str_replace('&', '&', str_replace($config_url, '', $this->url->link($this->request->get['route'], $this->getQueryString(array(
                'route',
                '_route_',
                'site_language'
            )), 'SSL')));
        } else {
            $config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);
            $url        = str_replace('&', '&', ltrim($this->request->server['REQUEST_URI'], '/'));

            $seo        = str_replace('&', '&', str_replace($config_url, '', $this->url->link($this->request->get['route'], $this->getQueryString(array(
                'route',
                '_route_',
                'site_language'
            )), 'NONSSL')));


        }

        if (rawurldecode($url) != rawurldecode($seo)) {
            header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

            
                $this->response->redirect($config_url . $seo);
            
        }
    }
    private function strpos_offset($needle, $haystack, $occurrence)
    {
        $arr = explode($needle, $haystack);
        switch ($occurrence) {
            case $occurrence == 0:
                return false;
            case $occurrence > max(array_keys($arr)):
                return false;
            default:
                return strlen(implode($needle, array_slice($arr, 0, $occurrence)));
        }
    }
    private function getQueryString($exclude = array())
    {
        if (!is_array($exclude)) {
            $exclude = array();
        }
        return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude))));
    }
Надіслати
Поділитися на інших сайтах

В культуре opencart нельзя пользоваться массивами $_SERVER (это плохо с точки зрения безопасности)

Только $this->request->server

Надіслати
Поділитися на інших сайтах

В культуре opencart нельзя пользоваться массивами $_SERVER (это плохо с точки зрения безопасности)

Только $this->request->server

 

Спасибо, за комментарии!) Будем исправляться!

Надіслати
Поділитися на інших сайтах


(вкратце он редиректит на каноническую страницу если пользователь попал не на неё)

а нафига тебе это вообще?

не изобретай проблемы и велосипедные решения.

Надіслати
Поділитися на інших сайтах

представь себе торговый центр.

у него есть несколько входов - главный, боковой, служебные.

внутри на третьем этаже есть магазин "супер-пупер-ништяки".

народ может зайти в торговый центр через любой вход и дойти до магазина - ведь магазин остается на месте, на третьем этаже НЕЗАВИСИМО от того, через какой вход зашел посетитель.

а ты хочешь всех, кто пытается через боковой вход зайти в торговый центр (чтобы попасть в магазин ништяков), выводить из ТЦ и отправлять к магазину через один из служебных входов.

НАХЕРА?

Надіслати
Поділитися на інших сайтах

  • 9 months later...

представь себе торговый центр.

у него есть несколько входов - главный, боковой, служебные.

внутри на третьем этаже есть магазин "супер-пупер-ништяки".

народ может зайти в торговый центр через любой вход и дойти до магазина - ведь магазин остается на месте, на третьем этаже НЕЗАВИСИМО от того, через какой вход зашел посетитель.

а ты хочешь всех, кто пытается через боковой вход зайти в торговый центр (чтобы попасть в магазин ништяков), выводить из ТЦ и отправлять к магазину через один из служебных входов.

НАХЕРА?

 

Поисковики требуют использовать только ЧПУ, а с остальных дублей делать редирект 301

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.