dii

Новичок
  • Публикаций

    1
  • Зарегистрирован

  • Посещение

Репутация

1 Обычный

Информация о dii

  • Звание
    Новичок
  1. Имеется: - пробная установка ocStore v1.0.1 релиз в раздел сайта (по урлу вида http://thesite.dom/teststore/) - включены ЧПУ типа SeoPro - заданы алиасы категориям и товарам - .htaccess содержит обычное ... RewriteEngine On RewriteBase /teststore/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] ... При попытке перейти по ЧПУ-ссылке категории вида http://thesite.dom/teststore/testcategory/ получаем диагностику redirect loop в браузере, а апачев accesslog пишет что-то вроде: "GET /teststore/testcategory/ HTTP/1.1" 301 - "GET /teststore/testcategory/ HTTP/1.1" 301 - "GET /teststore/testcategory/ HTTP/1.1" 301 - "GET /teststore/testcategory/ HTTP/1.1" 301 - "GET /teststore/testcategory/ HTTP/1.1" 301 - ... и так много раз подряд.В файле catalog/controller/common/seo_pro.php за это ответственен такой участок кода: class ControllerCommonSeoPro extends Controller { ... skipped ... private function validate($link) { ... skipped ... $seo_url = $this->url->link($this->request->get['route'], $args, $scheme); $seo_url = str_replace('&', '&', $seo_url); if ($link != rawurldecode(ltrim(parse_url($seo_url, PHP_URL_PATH), '/'))) { // <== вот тут не сработало условие $get[] = 'route'; $data = array_diff_key($this->request->get, array_flip($get)); if (count($data)) { $seo_url .= (strpos($seo_url, '?') === false) ? '?' : '&'; $seo_url .= urldecode(http_build_query($data)); } header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo_url); } } } У себя исправил так: class ControllerCommonSeoPro extends Controller { ... skipped ... private function validate($link) { ... skipped ... $seo_url = $this->url->link($this->request->get['route'], $args, $scheme); $seo_url = str_replace('&', '&', $seo_url); $linkpfx = ltrim(parse_url($this->config->get('config_url'), PHP_URL_PATH), '/'); if ($linkpfx.$link != rawurldecode(ltrim(parse_url($seo_url, PHP_URL_PATH), '/'))) { //if ($link != rawurldecode(ltrim(parse_url($seo_url, PHP_URL_PATH), '/'))) { $get[] = 'route'; $data = array_diff_key($this->request->get, array_flip($get)); if (count($data)) { $seo_url .= (strpos($seo_url, '?') === false) ? '?' : '&'; $seo_url .= urldecode(http_build_query($data)); } header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo_url); } } }