Естественно, старые URL должны быть через 301 редирект. Как я понимаю системное имя контента, после создания, поменять нельзя. Как решить это проблему? Гуглил, пробовал разные способы, единственное чего смог добиться — сменить URL, но вместо страницы с контентом, по новому адресу, получаю 404 страницу.
Сейчас
example.com/places
example.com/places/mycity
example.com/places/myobject.html
Надо
example.com/company
example.com/company/mycity
example.com/company/myobject.html
Спасибо.
при переходе сюда example.com/places или example.com/company? Опишите максимально подробно.теперь при переходе на страницу компонента получаю 404 ошибку.
"URL переименовался" — это вы как определили?
function remap_controllers(){
return array(
'places' => 'company',
);
}
Теперь все ссылки отображаются как мне надо — было example.com/places стало example.com/company. Однако, при переходе по этой ссылке получаю 404 ошибку. Ни очистка кеша, ни перезапуск браузера, ни перезапуск Денвера не помогают.
Определил очень просто, при наведении мыши на ссылку в меню сайта, которое подключено как {content:places}, вижу внизу слева браузера ссылку example.com/company, при переходе по ссылке сверху браузера, в адресной строке, вижу example.com/company, однако страница не отображается, возвращает 404 ошибку.
У меня сейчас версия 2.3.0, на более ранних версиях работало.
Разработчик сказал что данный момент, InstantCMS не позволяет переопределять URL для типов контента.а это docs.instantcms.ru/manual/settings/rewriting не поможет?
Evanescence, ясно.
Но странно, т.к. по идее .htaccess все равно какая стоит CMS и стоит ли она вообще, но его правка тоже выкидывает 404. Может есть идеи как через этот файл сделать смену URL?
Вот полазил по файлам...Разработчик сказал что данный момент, InstantCMS не позволяет переопределять URL для типов контента.
если немного перенести ремапинг то все работает вроде (файл: ..\system\core\core.php)
было:
/** * Запускает выбранное действие контроллера */ public function runController(){ $config = cmsConfig::getInstance(); // контроллер и экшен по-умолчанию if (!$this->uri_controller){ $this->uri_controller = $config->ct_autoload; } if (!$this->uri_action) { $this->uri_action = 'index'; } if (!self::isControllerExists($this->uri_controller)) { $this->uri_action = $this->uri_controller; $this->uri_controller = $config->ct_default; } // проверяем ремаппинг контроллера $remap_to = self::getControllerNameByAlias($this->uri_controller); if ($remap_to) { $this->uri_controller = $remap_to; } $this->controller = $this->uri_controller; // загружаем контроллер $controller = self::getController($this->uri_controller, $this->request); // сохраняем в контроллере название текущего экшена $controller->current_action = $this->uri_action; // запускаем действие $controller->runAction($this->uri_action, $this->uri_params); }
/** * Запускает выбранное действие контроллера */ public function runController(){ $config = cmsConfig::getInstance(); // контроллер и экшен по-умолчанию if (!$this->uri_controller){ $this->uri_controller = $config->ct_autoload; } if (!$this->uri_action) { $this->uri_action = 'index'; } // проверяем ремаппинг контроллера // <- переставили немного выше $remap_to = self::getControllerNameByAlias($this->uri_controller); if ($remap_to) { $this->uri_controller = $remap_to; } if (!self::isControllerExists($this->uri_controller)) { $this->uri_action = $this->uri_controller; $this->uri_controller = $config->ct_default; } // раньше был тут $this->controller = $this->uri_controller; // загружаем контроллер $controller = self::getController($this->uri_controller, $this->request); // сохраняем в контроллере название текущего экшена $controller->current_action = $this->uri_action; // запускаем действие $controller->runAction($this->uri_action, $this->uri_params); }
Что, процитирую классика, случай подходящий.
Ну, что ж!
На взгляд-то он хорош,
Да зелен — ягодки нет зрелой:
Тотчас оскомину набьешь.
Тогда остается ждать решение разработчиков
странно(((, на локалке у меня сработало...
Тогда остается ждать решение разработчиков
Было та же проблема после обновления, создавал недавно тему instantcms.ru/forum/thread23039.html, ничего не помогало, поправил core.php как подсказали выше, и все заработало. Спасибо!
-----
На локалке с чистой CMS заработало. Видимо проблема в одном из дополнений…
хмм, а вот теперь действительно странно- у Вас заработало, а у меня нет. При чем хаков у меня вообще нет. Удивительно
Проверил еще на одном сайте первый лежит на reg.ru второй на peterhost.ru все работает.