.htaccess замена части URL

#1 18 ноября 2015 в 22:08
Добрый день. Хочу поменять слово в URL сайта.
Естественно, старые 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

Спасибо.
#3 18 ноября 2015 в 22:37
Val, URL переименовался, теперь при переходе на страницу компонента получаю 404 ошибку. Очистка кеша/куков не помогает
#4 18 ноября 2015 в 22:47
Теоретически должно было работать...

теперь при переходе на страницу компонента получаю 404 ошибку.

asa
при переходе сюда example.com/places или example.com/company? Опишите максимально подробно.
"URL переименовался" — это вы как определили?
#5 18 ноября 2015 в 22:55
Добавил в файл /system/config/remap.php

function remap_controllers(){
return array(
'places' => 'company',
);
}

Теперь все ссылки отображаются как мне надо — было example.com/places стало example.com/company. Однако, при переходе по этой ссылке получаю 404 ошибку. Ни очистка кеша, ни перезапуск браузера, ни перезапуск Денвера не помогают.

Определил очень просто, при наведении мыши на ссылку в меню сайта, которое подключено как {content:places}, вижу внизу слева браузера ссылку example.com/company, при переходе по ссылке сверху браузера, в адресной строке, вижу example.com/company, однако страница не отображается, возвращает 404 ошибку.
#6 18 ноября 2015 в 23:06
Попробовал на локалке, та же проблема. Думаю стоит сообщить об этом разработчикам.
У меня сейчас версия 2.3.0, на более ранних версиях работало.
#7 18 ноября 2015 в 23:09

а это docs.instantcms.ru/manual/settings/rewriting не поможет?

Val
Разработчик сказал что данный момент, InstantCMS не позволяет переопределять URL для типов контента.
#8 18 ноября 2015 в 23:12
Val, сам только что скачал чистую iCMS 2 и попробовал. Тоже 404. Значит ждем, пока обратят Fuze или r2 внимание на эту тему.
Evanescence, ясно.

Но странно, т.к. по идее .htaccess все равно какая стоит CMS и стоит ли она вообще, но его правка тоже выкидывает 404. Может есть идеи как через этот файл сделать смену URL?
#9 18 ноября 2015 в 23:30

Разработчик сказал что данный момент, InstantCMS не позволяет переопределять URL для типов контента.

Evanescence
Вот полазил по файлам...
если немного перенести ремапинг то все работает вроде (файл: ..\system\core\core.php)
было:
  1. /**
  2.   * Запускает выбранное действие контроллера
  3.   */
  4. public function runController(){
  5.  
  6. $config = cmsConfig::getInstance();
  7.  
  8. // контроллер и экшен по-умолчанию
  9. if (!$this->uri_controller){ $this->uri_controller = $config->ct_autoload; }
  10. if (!$this->uri_action) { $this->uri_action = 'index'; }
  11.  
  12. if (!self::isControllerExists($this->uri_controller)) {
  13. $this->uri_action = $this->uri_controller;
  14. $this->uri_controller = $config->ct_default;
  15. }
  16.  
  17. // проверяем ремаппинг контроллера
  18. $remap_to = self::getControllerNameByAlias($this->uri_controller);
  19. if ($remap_to) { $this->uri_controller = $remap_to; }
  20.  
  21. $this->controller = $this->uri_controller;
  22.  
  23. // загружаем контроллер
  24. $controller = self::getController($this->uri_controller, $this->request);
  25.  
  26. // сохраняем в контроллере название текущего экшена
  27. $controller->current_action = $this->uri_action;
  28.  
  29. // запускаем действие
  30. $controller->runAction($this->uri_action, $this->uri_params);
  31.  
  32. }
стало:
  1. /**
  2.   * Запускает выбранное действие контроллера
  3.   */
  4. public function runController(){
  5.  
  6. $config = cmsConfig::getInstance();
  7.  
  8. // контроллер и экшен по-умолчанию
  9. if (!$this->uri_controller){ $this->uri_controller = $config->ct_autoload; }
  10. if (!$this->uri_action) { $this->uri_action = 'index'; }
  11.  
  12. // проверяем ремаппинг контроллера // <- переставили немного выше
  13. $remap_to = self::getControllerNameByAlias($this->uri_controller);
  14. if ($remap_to) { $this->uri_controller = $remap_to; }
  15.  
  16. if (!self::isControllerExists($this->uri_controller)) {
  17. $this->uri_action = $this->uri_controller;
  18. $this->uri_controller = $config->ct_default;
  19. }
  20.  
  21. // раньше был тут
  22.  
  23. $this->controller = $this->uri_controller;
  24.  
  25. // загружаем контроллер
  26. $controller = self::getController($this->uri_controller, $this->request);
  27.  
  28. // сохраняем в контроллере название текущего экшена
  29. $controller->current_action = $this->uri_action;
  30.  
  31. // запускаем действие
  32. $controller->runAction($this->uri_action, $this->uri_params);
  33.  
  34. }
чяднт?
#10 19 ноября 2015 в 09:40
Val, к огромному сожалению не работает.

Что, процитирую классика, случай подходящий.

Ну, что ж!
На взгляд-то он хорош,
Да зелен — ягодки нет зрелой:
Тотчас оскомину набьешь.

#11 19 ноября 2015 в 10:37
странно(((, на локалке у меня сработало...
Тогда остается ждать решение разработчиков
#12 19 ноября 2015 в 11:56


странно(((, на локалке у меня сработало...
Тогда остается ждать решение разработчиков

Val

Было та же проблема после обновления, создавал недавно тему instantcms.ru/forum/thread23039.html, ничего не помогало, поправил core.php как подсказали выше, и все заработало. Спасибо!
#13 19 ноября 2015 в 12:15
хмм, а вот теперь действительно странно- у Вас заработало, а у меня нет. При чем хаков у меня вообще нет. Удивительно shock

-----
На локалке с чистой CMS заработало. Видимо проблема в одном из дополнений…
#14 19 ноября 2015 в 12:20


хмм, а вот теперь действительно странно- у Вас заработало, а у меня нет. При чем хаков у меня вообще нет. Удивительно shock

asa

Проверил еще на одном сайте первый лежит на reg.ru второй на peterhost.ru все работает.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.