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

настройка ЧПУ

00 голосов
6
Вот здесь хороший человек описывает способы настройки ЧПУ http://www.1c-bitrix.ru/support/forum/forum6/topic3855/message24664/#message24664. Я пробую вариант номер 3.

В .htaccess добавляю такой код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^market/([a-zA-Z0-9\-_]+)/?$ market/index.php?SECTION_ID=$1
RewriteRule ^market/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)/?$ market/index.php?SECTION_ID=$1&ELEMENT_ID=$2
</IfModule>

Затем набираю ссылку типа: market/boot/, но результат нулевый. Нужная страница не открывается.

Подскажите, пожалуйста, в чем тут проблема?
спросил 06 Авг, 13 от Igeo (140 баллов)

6 Ответы

00 голосов
Скорее всего в SECTION_ID должен передаваться числовой идентификатор (ID), а не символьный.
Чтобы ссылки были с символьным идентификатором, ваш скрипт должен делать выборку по символьному коду, а не по ID.
ответил 06 Авг, 13 от Sazragore (500 баллов)
00 голосов
Цитата
Антон Герасимюк пишет:
Чтобы ссылки были с символьным идентификатором, ваш скрипт должен делать выборку по символьному коду, а не по ID.
Замечательный ответ программиста для программиста, а что делать не программисту?

В faq-е есть прекрасный вопрос:
Цитата
Вопрос: Как настроить ЧПУ без использования числовых идентификаторов (ID)?
и не менее прекрасное начало ответа:
Цитата
Для хранения идентификаторов элементов/разделов информационных блоков удобнее всего использовать поле "Символическое имя". Например, в ссылке www.myserver.ru/catalog/mobile/nokia_3310/
'mobile' - это символическое имя группы "Мобильные телефоны", а 'nokia_3310' - символическое имя элемента, находящегося в группе "Мобильные телефоны".

Отлично, это как раз то, что нужно.

Но дальше, где в тексте найти как это осуществимо?
Автор зачем-то рассказывает, как разобрать какую-то переменную для ссылки
Код
www.myserver.ru/users/<Логин пользователя>
простите, но где здесь замена цифр, получаемых из ID на нужное нам символическое имя???

Далее еще хлещще, в первом примере получаем ссылку
Код
/about/news/23.html
из ссылки
Код
/about/news/detail.php?ID=23
Но с поддержкой ЧПУ такие ссылки и так работают.

В примере втором создаем идентификатор, это имеет какое-то отношение к:
Цитата
Вопрос: Как настроить ЧПУ без использования числовых идентификаторов (ID)?


Да и вообще, судя по дате написания этого faq-а ф форуме, писалься он еще до поддержки чпу в Битриксе.

А вопрос-то, насколько я понимаю, для программиста - дело двух минут.
Цитата
Чтобы ссылки были с символьным идентификатором, ваш скрипт должен делать выборку по символьному коду, а не по ID.


Что мы имеем.
1. Меню для разделов инфоблока формируется в файле .left.menu_ext.php
и имеет содержание:
Код
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global $APPLICATION;

$aMenuLinksAdd=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", Array(
   "ID"           =>   $_REQUEST["news"],
   "IBLOCK_TYPE"   =>   "news",
   "IBLOCK_ID"   =>   "3",
        "SECTION_URL"   =>   "/content/news/#ID#",
   "DEPTH_LEVEL"   =>   "1",
   "CACHE_TYPE"   =>   "A",
   "CACHE_TIME"   =>   "3600"
   )



);

$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksAdd);
?>

Простой вопрос, как сформировать это меню не по ID разделов, а по их символному коду.

2. Комплексный компонент bitrix:news с праметрами УРЛов:
Код
"section" => "#SECTION_ID#",
"detail" => "#SECTION_ID#/#ELEMENT_ID#/",


Простой вопрос, как в параметрах #SECTION_ID# и #ELEMENT_ID# получить символьные коды разделов и элементов?

Ответ на эти два простых вопроса и даст нам в итоге ответ на замечательный вопрос в faq-е:
Цитата
Вопрос: Как настроить ЧПУ без использования числовых идентификаторов (ID)?
которого, к сожалению, на данный момент не существует.
ответил 07 Окт, 13 от Skuka (140 баллов)
00 голосов
Делов то добавить в шаблоны кроме #SECTION_ID# и #ELEMENT_ID# - #SECTION_URL_NAME# и #ELEMENT_URL_NAME#
Соответственно поля добавить понадобиться

А кто этот человек, которому понятны URL типа

/catalog/33/455 ?
ответил 07 Янв, 14 от Gental (100 баллов)
00 голосов
Приветствую господа.

Теперь у меня вопросы (предупреждаю - я не разработчик - я дилетант).

В админке сайта уже есть для нужных элементов поле ввода "символьный код" - я так понял его надо заполнят тем именем, которое требуется выводить в урле и на которое страница должна откликаться.
тут - Рисунок

Например есть страницы фирм, вида www.*****.ru/firms/2233/ - а надо привести к www.*****.ru/firms/nokia/.

Я так понимаю все что нужно это изменить файл /urlrewrite.php который в корне сайта?

И тогда например для раздела в RULE вместо "sid=$1" вписывается "#SECTION_CODE#":

array(
"CONDITION" => "#^/firms/([0-9]+)/#",
"RULE" => "sid=$1",
"ID" => "",
"PATH" => "/firms/list.php",
),

При этом "CONDITION" - остается без изменений? Или становится ([a-z])?

Прошу по содействовать дилетанту.
ответил 24 Апр, 14 от Popitka1 (100 баллов)
00 голосов
У меня вопрос такой. Во всех разделах работает штатное ЧПУ, которое превращает "абракадабру" в структурированные адреса соответствуя инфоблокам. В принципе это устраивает кроме одного инфоблока, где на детальной странице хотелось бы чтобы был не ID а символьный код.
По логике вещей:
1) выставил в настройках инфоблока, авто создание символьного кода в транслите
2) там же в настройках инфоблока , URL детальной страницы сменил
Код
#ID#
на
Код
#CODE#


Но что-то никак не запускается. Может кто подскажет где я не там пошел????
ответил 19 Авг, 14 от immortal (100 баллов)
00 голосов
то нет?
Цитата
Не , ну вы и извращенцы. А галочка "Включить поддержку ЧПУ" в настройках компонента уже никого не устраивает?
Одна галочка и будет у вас вместо
ссылки вида сайт.ру/раздел/detail.php?CODE=ЧПУ
ссылки вида сайт.ру/раздел/ЧПУ
Чтобы у вас вместо id в ссылках использовался символьный код надо после того как галочку "Включить поддержку ЧПУ" поставите и в ссылках правите - заменяете #ELEMENT_ID#/ на #ELEMENT_CODE#.html

Далее в настройках нужново вам ИБ в свойствах элемента ставите генерацию символьного кода из заголовка элемента.
+ в тех же настройках ИБ пишете эдентичные ссылки что и в компоненте - чтобы потом поиск правильно ссылся на найденный текст из ваших элементов а не на 404 ошибку.

Настройки нужного ИБ, закладка поля & поля разделов, снизу символьный код
ответил 24 Дек, 14 от rg (440 баллов)

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

0 голосов
1 ответ
спросил 03 Июль, 14 от Werner (160 баллов)
0 голосов
4 ответов
спросил 19 Окт, 13 от Cload (120 баллов)
0 голосов
9 ответов
спросил 23 Май, 13 от Mikstik (220 баллов)
0 голосов
1 ответ