Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Сохранение урлов

00 голосов
7
Случилось такое, что мне нужно перенести сайт с другой cms с сохранением старых URL. Проблема в общем в том, что URL там как правило без слешей на концах.
Видимо придется строить реврайты из старой структуры в новую, но вот что не ясно. Если есть старый URL - /path и его реврайтить в новый /razdel/path/index.php - как бы сделать так, что бы меню видело, что мы находимся в /razdel/path/ (дабы работали подсветки активных элементов).
Или может еще как-то можно такое реализовать? Внешние редиректы не подходят.
спросил 20 Авг, 13 от TRIAL (180 баллов)

7 Ответы

00 голосов
А использование дополнительных ссылок ($ADDITIONAL_LINKS) для подсветки меню не подходит?

http://dev.1c-bitrix.ru/api_help/main/general/menu_5x.php
ответил 20 Авг, 13 от Delp (7,220 баллов)
00 голосов
Не помогаеть =( Да и не хотелось бы прописывать эти старые ссылки в 2-х местах - и в реврайте и в меню. Как я понимаю, проблема в том, что после реврайта меню использует исходный URI (а не тот, который получился после реврайта)... и ничего не находит. Если бы научить использовать новый...
ответил 30 Окт, 13 от TRIAL (180 баллов)
00 голосов
А если через urlrewrite.php?

Вообще, рассказывайте как делаете перенаправление, а то угадай мелодию у нас получается.
ответил 04 Фев, 14 от Delp (7,220 баллов)
00 голосов
Помогло в шаблоне сказать $APPLICATION->SetCurPage($_SERVER["REAL_FILE_PATH"])
Почти то, что нужно за исключением того, что на сайте появились урлы с дублированным контентом - СЕОшники не обрадуются.
Может есть еще решения? Основная проблема в том, что то, что раньше было /oldpath - сейчас /dir1/dir2/index.php
ответил 24 Май, 14 от TRIAL (180 баллов)
00 голосов
Цитата
Sergey Leshchenko пишет:
А если через urlrewrite.php?

Да через него пытаюсь.
Если делать напрямую через mod_rewrite - это ничего не изменит, увы.
Минусы - криво (нужно переопределять CurPage) и дублирование урлов. Но видимо более прямого способа нет?
С дублированием тоже бороться можно, надо только понять как =) В меню то ссылкой можно прописать старый URI, а вот хлебные крошки генерятся уже с нормальным...
ответил 20 Сен, 14 от TRIAL (180 баллов)
00 голосов
Понятно. В общем, попробуйте делать "редирект" через urlrewrite.php

urlrewrite.php
Код
$arUrlRewrite = array(
   array(
      "CONDITION"   =>   "#^/oldpath2#",
      "RULE"   =>   "",
      "ID"   =>   "",
      "PATH"   =>   /dir3/dir4/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/oldpath#",
      "RULE"   =>   "",
      "ID"   =>   "",
      "PATH"   =>   /dir1/dir2/index.php",
   ),

);

- первое условие подключит по запросу /oldpath2 страницу /dir3/dir4/index.php (если пути /oldpath2 не найдется на сервре, разумеется)
второе - для запроса /oldpath подключит /dir1/dir2/index.php

Обратите внимание на последовательность правил. В данном примере если их поменять местами, то на запрос /oldpath2 и /oldpath будет всегда удовлетворять первое условие.
ответил 24 Янв, 15 от Delp (7,220 баллов)
00 голосов
Прошу прощения, я забыл совсем, что стандартный CMenu не умеет работать нормально с SEF (уже давно не пользуюсь им).
Поэтому да, самый простой выход здесь - это жуткий костыль $APPLICATION->SetCurPage($_SERVER["REAL_FILE_PATH"])
ответил 08 Май, 15 от Delp (7,220 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
6 ответов
0 голосов
3 ответов
0 голосов
7 ответов
спросил 01 Июнь, 13 от maxdj (480 баллов)