Bitrix urlrewrite php запрещен

Форум

Ситуация такая. На странице clients вывели компонент news.list.

В настройках detail.php стоит следующее:
URL страницы просмотра списка элементов (по умолчанию — из настроек инфоблока): /clients/
URL страницы детального просмотра (по умолчанию — из настроек инфоблока): #ELEMENT_CODE#

В настройках инфоблока:
URL страницы информационного блока: #SITE_DIR#/clients/index.php
URL страницы раздела:
URL страницы детального просмотра: #SITE_DIR#/clients/#ELEMENT_CODE#/

urlrewrite.php:
array(
«CONDITION» => «#^/clients/([a-zA-Z0-9\\.\\-_]+)/#»,
«RULE» => «ELEMENT_CODE=$1»,
«ID» => «»,
«PATH» => «/clients/detail.php»,
)

И в общем-то с текущими настройками всё работает и отображается, как надо.

ПРОБЛЕМА:
Через определенное время (примерно через каждые 15 минут), Битрикс перезаписывает файл urlrewrite, добавля в CONDITION — ?.*:

После этого страница детальной новости не отображается.

Причем, обновления urlrewrite.php обновляется вне зависимости от работы в админке.

ЧТО ПРОБОВАЛОСЬ ДЛЯ РЕШЕНИЯ ПРОБЛЕМЫ:
1. Изменить права на urlrewrite на 444. Но, безуспешно. На хостинге — права меняются, в админке — всё также 644 и поменять их на 444 не удается.
2. На форуме нашла ветку о том, что можно заменить urlrewrite на свой файл my_rewrite и давались последовательно шаги. Сделала всё по инструкции. Проблема сохранилась.
3. Дописывала в и bitrix:news.list, и bitrix:news.detail — при очередной перезаписи urlrewrite содержимое поля ID (компонент) — стирается
4. Пробовала перезаписывать правила, через кнопку в «Настройки продукта» -> «Правила обработки адресов» -> Перезаписать данные. Не помогло.
5. Пробовала и сохранить изменения непосредственно в файле, и в тех же настройках продукта. Ничего.

Пожалуйста, помогите. Уже нервно дергается глаз. Убеждена, что здесь дело состоит в малом, а проблем создает много)))

Источник

Как изменить страницу к которой доступ запрещен?

618a90306518e683732234.png

Есть зарегистрированная группа пользователей у которой нет доступ к веб-форме, если зайти на страницу где она размещена то вылезает форма авторизации, но пользователь и так авторизирован, я бы хотела свой кусок кода там разместить, но не понимаю где найти этот файл. Помогите пожалуйста.

Как я поняла битрикс всегда использует форму для авторизации если доступ к разделу или страницы запрещен.
В итоге я сняла права доступа для определенных групп пользователя и просто сделала проверку

global $USER; $groupID = 8; if (in_array($groupID,$USER->GetUserGroupArray())) < echo 'Пользователь состоит в группе'; >else

Если пользователь состоит в группе то можно вывести один код, иначе другой.

no_one_safe

По ссылке в браузере, не?
Читаете ссылку — есть такая директория на сайте?
1. Если есть — открываете файл index.php в этой директории и начинаете читать код.
2. Если такой директории нет — значит работает ротинг. Открываете файл urlrewrite.php в корне проекте и начинаете читать код. Находите нужное правило обработки и идете в п.1.

Ссылке в браузере не меняется. Я открыла файл urlrewrite.php и даже пересоздала правила обработки адресов, но там нет страниц в которых доступ запрещен для определенных групп пользователей.

 array ( 'CONDITION' => '#^\\/?\\/mobileapp/jn\\/(.*)\\/.*#', 'RULE' => 'componentName=$1', 'ID' => NULL, 'PATH' => '/bitrix/services/mobileapp/jn.php', 'SORT' => 100, ), 2 => array ( 'CONDITION' => '#^/bitrix/services/ymarket/#', 'RULE' => '', 'ID' => '', 'PATH' => '/bitrix/services/ymarket/index.php', 'SORT' => 100, ), 1 => array ( 'CONDITION' => '#^/rest/#', 'RULE' => '', 'ID' => NULL, 'PATH' => '/bitrix/services/rest/index.php', 'SORT' => 100, ), );

no_one_safe

no_one_safe, У одной группы пользователей видна веб-форма, у другой нет (вместо формы код определенный должен выводиться).
Урл такой site.ru/personal/statement/

То есть по адресу statement/index.php лежит компонент.

SetTitle("Заявка");?> IncludeComponent( "bitrix:form", "application", array( "AJAX_MODE" => "N", "AJAX_OPTION_ADDITIONAL" => "", "AJAX_OPTION_HISTORY" => "N", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "CACHE_TIME" => "3600", "CACHE_TYPE" => "A", "CHAIN_ITEM_LINK" => "", "CHAIN_ITEM_TEXT" => "", "COMPONENT_TEMPLATE" => "application", "EDIT_ADDITIONAL" => "N", "EDIT_STATUS" => "N", "IGNORE_CUSTOM_TEMPLATE" => "N", "NAME_TEMPLATE" => "", "NOT_SHOW_FILTER" => array( 0 => "", 1 => "", ), "NOT_SHOW_TABLE" => array( 0 => "", 1 => "", ), "RESULT_ID" => $_REQUEST[RESULT_ID], "SEF_MODE" => "N", "SHOW_ADDITIONAL" => "N", "SHOW_ANSWER_VALUE" => "N", "SHOW_EDIT_PAGE" => "N", "SHOW_LIST_PAGE" => "Y", "SHOW_STATUS" => "N", "SHOW_VIEW_PAGE" => "N", "START_PAGE" => "list", "SUCCESS_URL" => "", "USE_EXTENDED_ERRORS" => "N", "WEB_FORM_ID" => "1", "VARIABLE_ALIASES" => array( "action" => "action", ) ), false );?> 

Источник

Запрет на перетасовку правил в urlrewrite.php

Бывает что на проекте создано очень много правил для ЧПУ страниц:
разделы, подразделы, детальная товара, сортировки, фильтры, постраничка и т.д. + различные их комбинации, например третья страница раздела с выбранной сортировкой и наложенным фильтром..

При этом очень важно чтобы все правила в файле urlrewrite.php располагались в строго определенном порядке от частных к общим, так как срабатывает первое подошедшее .

Проблема в том что в «Настройка правил обработки адресов» нет поля сортировки и после пересохранения файла, например, автоматического, комплексным компонентом с включенным ЧПУ после редактирования какого-нибудь параметра — вся логика ЧПУ сайта рушится, вплоть до того что перестают отображаться страницы.

Я придумал такое решение (не затирается при обновлении системы):

Показать скрытое содержимое

1. создаем файл /my_urlrewrite.php, в который переносим все наши правила.

include_once($_SERVER['DOCUMENT_ROOT'].' /bitrix/modules/main/include/urlrewrite.php');
include_once($_SERVER['DOCUMENT_ROOT'].'/include/my_urlrewrite.php');

3. в /include/ создаем копию /bitrix/modules/main/include/urlrewrite.php с именем my_urlrewrite.php, а в нем меняем:

if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php");
if(file_exists($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php");
if(file_exists($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php"); $MYarUrlRewrite = array(); if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php"); $arUrlRewrite = array_merge($MYarUrlRewrite, $arUrlRewrite);

:-)

Минусов пока не вижу.
Возможно задачу можно решить более элегантно. Предлагайте варианты

Источник

Запрет на перетасовку правил в urlrewrite.php

Бывает что на проекте создано очень много правил для ЧПУ страниц:
разделы, подразделы, детальная товара, сортировки, фильтры, постраничка и т.д. + различные их комбинации, например третья страница раздела с выбранной сортировкой и наложенным фильтром..

При этом очень важно чтобы все правила в файле urlrewrite.php располагались в строго определенном порядке от частных к общим, так как срабатывает первое подошедшее .

Проблема в том что в «Настройка правил обработки адресов» нет поля сортировки и после пересохранения файла, например, автоматического, комплексным компонентом с включенным ЧПУ после редактирования какого-нибудь параметра — вся логика ЧПУ сайта рушится, вплоть до того что перестают отображаться страницы.

Я придумал такое решение (не затирается при обновлении системы):

Показать скрытое содержимое

1. создаем файл /my_urlrewrite.php, в который переносим все наши правила.

include_once($_SERVER['DOCUMENT_ROOT'].' /bitrix/modules/main/include/urlrewrite.php');
include_once($_SERVER['DOCUMENT_ROOT'].'/include/my_urlrewrite.php');

3. в /include/ создаем копию /bitrix/modules/main/include/urlrewrite.php с именем my_urlrewrite.php, а в нем меняем:

if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php");
if(file_exists($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php");
if(file_exists($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/my_urlrewrite.php"); $MYarUrlRewrite = array(); if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php")) include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php"); $arUrlRewrite = array_merge($MYarUrlRewrite, $arUrlRewrite);

:-)

Минусов пока не вижу.
Возможно задачу можно решить более элегантно. Предлагайте варианты

Источник

Читайте также:  Use ascii in html
Оцените статью