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

Проблемы с ЧПУ


Recommended Posts

Добрый вечер уважаемые форумчане. Столкнулся первый раз с такой проблемой: при включении чпу, страницы не открываются и имеют вид http://kubtorg.ru/index.php/kofejnye-avtomaty  htaccess переименован и стоит в корне опенкарта. Не пойму в чем может быть дело? версия 2.2.0.0

Змінено користувачем Alexidi76
Надіслати
Поділитися на інших сайтах


страницы не открываются и имеют вид http://kubtorg.ru/in...fejnye-avtomaty  htaccess переименован

Если выкинуть из ссылки index.php, то всё прекрасно открывается, так что .htaccess тут не при чём - проблема только в генерации ЧПУ.

Что у вас в /catalog/controller/startup/seo_url.php и /system/storage/modification/catalog/controller/startup/seo_url.php?

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


Не знаю о чем вы говорите. В модулях нет никаких подобных модулей.

Вы уверены ?

У вас ЧПУ формирователь seo_url rewrite() генерирует не правильные ЧПУ - значит "что-то" есть 

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

Если выкинуть из ссылки index.php, то всё прекрасно открывается, так что .htaccess тут не при чём - проблема только в генерации ЧПУ.

Что у вас в /catalog/controller/startup/seo_url.php и /system/storage/modification/catalog/controller/startup/seo_url.php?

 

/catalog/controller/startup/seo_url.php

<?php
class ControllerStartupSeoUrl extends Controller {
	public function index() {
		// Add rewrite to url class
		if ($this->config->get('config_seo_url')) {
			$this->url->addRewrite($this);
		}

		// Decode URL
		if (isset($this->request->get['_route_'])) {
			$parts = explode('/', $this->request->get['_route_']);

			// remove any empty arrays from trailing
			if (utf8_strlen(end($parts)) == 0) {
				array_pop($parts);
			}

			foreach ($parts as $part) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");

				if ($query->num_rows) {
					$url = explode('=', $query->row['query']);

					if ($url[0] == 'product_id') {
						$this->request->get['product_id'] = $url[1];
					}

					if ($url[0] == 'category_id') {
						if (!isset($this->request->get['path'])) {
							$this->request->get['path'] = $url[1];
						} else {
							$this->request->get['path'] .= '_' . $url[1];
						}
					}

					if ($url[0] == 'manufacturer_id') {
						$this->request->get['manufacturer_id'] = $url[1];
					}

					if ($url[0] == 'information_id') {
						$this->request->get['information_id'] = $url[1];
					}

					if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') {
						$this->request->get['route'] = $query->row['query'];
					}
				} else {
					$this->request->get['route'] = 'error/not_found';

					break;
				}
			}

			if (!isset($this->request->get['route'])) {
				if (isset($this->request->get['product_id'])) {
					$this->request->get['route'] = 'product/product';
				} elseif (isset($this->request->get['path'])) {
					$this->request->get['route'] = 'product/category';
				} elseif (isset($this->request->get['manufacturer_id'])) {
					$this->request->get['route'] = 'product/manufacturer/info';
				} elseif (isset($this->request->get['information_id'])) {
					$this->request->get['route'] = 'information/information';
				}
			}

			if (isset($this->request->get['route'])) {
				return new Action($this->request->get['route']);
			}
		}
	}

	public function rewrite($link) {
		$url_info = parse_url(str_replace('&', '&', $link));

		$url = '';

		$data = array();

		parse_str($url_info['query'], $data);

		foreach ($data as $key => $value) {
			if (isset($data['route'])) {
				if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
					$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");

					if ($query->num_rows && $query->row['keyword']) {
						$url .= '/' . $query->row['keyword'];

						unset($data[$key]);
					}
				} elseif ($key == 'path') {
					$categories = explode('_', $value);

					foreach ($categories as $category) {
						$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");

						if ($query->num_rows && $query->row['keyword']) {
							$url .= '/' . $query->row['keyword'];
						} else {
							$url = '';

							break;
						}
					}

					unset($data[$key]);
				}
			}
		}

		if ($url) {
			unset($data['route']);

			$query = '';

			if ($data) {
				foreach ($data as $key => $value) {
					$query .= '&' . rawurlencode((string)$key) . '=' . rawurlencode((is_array($value) ? http_build_query($value) : (string)$value));
				}

				if ($query) {
					$query = '?' . str_replace('&', '&', trim($query, '&'));
				}
			}

			return 'http://kubtorg.ru/' . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;
		} else {
			return $link;
		}
	}
}

/system/storage/modification/catalog/controller/startup/seo_url.php  -  нет такой директории.

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


Вы уверены ?

У вас ЧПУ формирователь seo_url rewrite() генерирует не правильные ЧПУ - значит "что-то" есть 

В модулях нет ничего подобного чтобы напоминало о сео. есть автоматический транслит, файл js  в админке просто подставляет латыницу в сеоурл.

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


А что это WTF ?

return 'http://kubtorg.ru/' . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;

Возьмите оригинальный seo_url.php

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

А что это WTF ?

return 'http://kubtorg.ru/' . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;

Возьмите оригинальный seo_url.php

это из какой директории?

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


это из какой директории?

Ну вы что не видите - это из вашего seo_url.php который вы здесь предоставили

Кто вам такую "засаду" сделал?

Ставьте оригинальный seo_url.php

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

А что это WTF ?

return 'http://kubtorg.ru/' . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;

Возьмите оригинальный seo_url.php

 

Не вариант, вылезло куча ошибок.

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


Не вариант, вылезло куча ошибок.

Ну тогда мы вам помочь не сможем

Вам кто то топором допиливал seo_url.php неизвестно под что

Так не делают

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

Ну тогда мы вам помочь не сможем

Вам кто то топором допиливал seo_url.php неизвестно под что

Так не делают

Да я сам в шоке от такой криворукости. Первый раз с таким сталкиваюсь. Я не знаю кто это делал. Взялся помочь, а тут такая засада.

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


Может залить поверх существующего сайта оригинальные файлы движка?

Просто мы не знаем что вам там "пилили" ручной пилой "дружба"

Можете залить поверх и ваш магазин уйдет в даун

Но так как вам пилили seo_url.php .. за такое сразу в табло бьют

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

Ладно, попробую залить предварительно сделав бэкап. отпишусь за результат. Не найти уж кому табло набить...

Для начала можно ещё попробовать заглянуть в /system/library/url.php. Уверен, там тоже поковырялись и есть вероятность, что причина проблемы там.

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


Для начала можно ещё попробовать заглянуть в /system/library/url.php. Уверен, там тоже поковырялись и есть вероятность, что причина проблемы там.

Это не "поковырялись", это уже "надругались" скорее

Я не понимаю как так можно по тупому вставлять такие костыли.

Да скорее всего и в url.php тоже надругались над кодом... и даже не хочу думать где еще. :ugeek:

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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