Особенности работы с правилами
Что нужно учитывать |
Система допускает создание нескольких правил для одного файла. Лучше написать два-три понятных правила, чем объединить их через ИЛИ и сделать одно громоздкое правило "на все случаи жизни". Такое правило непонятно как потом менять.
Система сортирует все правила по условиям сначала по алфавиту и длине. Правило с более длинным подходящим условием (CONDITION) применяется первым, как более частное. А затем правила с короткими условиями, как более общие. Пример: правило для элемента ^/news/([0-9a-zA-Z_-]+)/([0-9]+)/.*
будет применяться первым (как правило с более длинным условием) и, если условие не подходит, то применится правило для раздела с ^/news/([0-9a-zA-Z_-]+)/.*
.
.*
в конец Условия если оно задано. Без "звёздочки" правило не будет работать при использовании параметров в URL. Например, при добавленном параметре ?clear_cache=Y
.Пишите правила единообразно, так как из двух правил для раздела и детального просмотра, имеющих условия ^/news/([0-9a-zA-Z_-]+)/.*
и ^/news/([\w-]+)/([\d]+)/.*
не понятно, какое из правил сработает первым, поскольку длина обоих правил 26 символов и оба начинаются с /news/.
Если правило для детального просмотра элемента написано ^/news/([\w-]+)/([\d]+)/.*
то и правило для просмотра раздела нужно писать аналогично ^/news/([\w-]+)/.*
чтобы правила не перемешивались при автоматической сортировке. Или, если писать для просмотра элемента ^/news/([0-9a-zA-Z_-]+)/([0-9]+)/.*
, то тогда и для раздела использовать ^/news/([0-9a-zA-Z_-]+)/.*
.
Сортировка правил по длине условий производится при изменении их через административную часть (Настройки > Настройки продукта > Обработка адресов > Правила обработки), в том числе и когда добавляется через визуальный редактор компонент с ЧПУ. А при обработке ЧПУ-запроса просто перебирается массив правил из /urlrewrite.php в той последовательности, в которой они там находятся. И поиск длится до первого совпадения. То есть, если вы вручную изменили массив ЧПУ-правил в /urlrewrite.php и разместили запись с условием #^/news/([0-9a-zA-Z_-]+)/.*#
выше #^/news/([0-9a-zA-Z_-]+)/([0-9]+)/.*#
, то до второго условия дело никогда не дойдет, не смотря на то, что оно длиннее.
Как лучше формировать ЧПУ элемента в каталоге - по ID или по символьному коду?
/catalog/poleznye_shtuki/121.html
или
/catalog/poleznye_shtuki/ochen-poleznaya-zelenaya-shtuka-s-plazmennym-nabaldashnikom-i-ruchkoi.html
Первый вариант понятнее, получение элемента по ID быстрее, чем по символьному коду, его удобнее диктовать и сложнее ошибиться. Второй вариант гораздо выгоднее с точки зрения SEO.
Если в адресах используются численные значения ID элемента (/main/news/12/
), то возможна ситуация, когда численное значение будет иметь и символьный код раздела. В этом случае правило сработает не правильно. Для детальных страниц лучше использовать подобный принцип: /[секции]/элемент.php
, тогда и проблем с ЧПУ не будет. Например, лучше использовать условие #^/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9]+)\.php.*#
, чем условие #^/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9]+)/.*#
Кириллица в URL создаёт дополнительные проблемы: диапазон русских символов не является непрерывным. В этом случае используйте вместо логичного для латиницы условия ^/test/([0-9a-zA-Zа-яА-Я_-]+)/.*#
такой вариант: #^/test/([0-9a-zA-Zа-пр-яА-ЯёЁ_-]+)/.*#
.
Документация по теме: |
- ЧПУ в компонентах
- Вложенные ЧПУ
- Обработка адресов
- Один из способов включения подразделов инфоблоков в пути для ЧПУ (для версий ниже 12.5).
- Другой способ включения подразделов инфоблоков в пути для ЧПУ (для версий ниже 12.5).
Самая первая глава
Основные сведения о системе
Основы администрирования
- Настройка главного модуля
-
Информация на сайте и работа с ней
- Создание и редактирование новых страниц и разделов
- Управление свойствами страниц и разделов
- Управление правами доступа
- Загрузка и поиск файлов
- Расширенный режим настройки меню
- Шаблонизация контента статических страниц
- Настройки модуля Управление структурой
- Пример работы с информацией
- Постановка задачи
- Создание инфоблока
- Создание раздела и размещение компонента
- Форма добавления объявлений
- Результат
- Визуальный редактор
- Управление сайтами
- Управление доступом
- Дизайн сайта и многоязычность
-
Управление интерфейсом
- Пользовательские настройки
- Административные настройки
- Административные настройки
- Горячие клавиши
- Поведение мыши по умолчанию
- Добавление пункта меню в административный раздел
- Языки интерфейса
- Управление языками
- Региональные настройки
- Загрузка языковых файлов
- Управление языковыми сообщениями
- Mодуль Перевод
- Поиск языковых файлов
- Перевод фраз
- Импорт и экспорт
- Настройка вида страницы ошибки 404
- Работа с Инструментами
- Пользовательские поля
- Система обработки адресов и ЧПУ
- Рейтинги
- Смайлы и агенты
- Как выявить кастомизацию на сайте
- Дисковое пространство
- Проверьте себя
- Практические задания
Пользователи и авторизация
- Регистрация и разграничение прав
- Группы пользователей
- Работа с учетными записями пользователей
- Типовые роли пользователей сайта
- Импорт пользователей
- Безопасная авторизация
- Пример настройки прав пользователей
- Если пропадает авторизация пользователя
- Регистрация по номеру телефона
- Как восстановить пароль администратора
- Как создать форму авторизации (регистрации) на простых компонентах
- CAPTCHA
-
AD/LDAP интеграция
- Назначение и возможности модуля
- Схема работы модуля
- Настройка модуля
- Принадлежность пользователей к подразделениям на AD-сервере
- Регистрация сервера
- NTLM авторизация
- Настройка NTLM авторизации со стороны продукта
- Настройка NTLM-авторизации для Apache
- Настройка NTLM-авторизации для IIS
- Настройка NTLM модуля Linux для Битрикс
- Настройка браузеров сотрудников
- Проблемы и решения
- Проверьте себя
- Практические задания
Безопасность сайта
- Обеспечение безопасности
- Настройка HTTPS-соединения
- Контроль за изменениями в системе
- Пример настроек закладки Безопасность группы пользователей
- Проблема ботов
- Как закрыть доступ к сайту другому администратору
-
Проактивная защита
- Предотвращаем вторжения
- Немного теории: уязвимости
- Немного теории: уровни Проактивной защиты
- Настройки модуля Проактивная защита
- Сканер безопасности
- Что может сканер безопасности
- Трактовка результатов сканера безопасности
- Стандартный уровень
- Высокий уровень
- Повышенный уровень
- Двухэтапная авторизация
- Система одноразовых паролей
- Механизм двухэтапной авторизации
- Подключение устройств
- Какие устройства можно подключить
- Мобильное приложение
- Аппаратное устройство
- Резервные коды
- Синхронизация
- Компоненты
- Стоп-лист
- Хосты/домены
- Защита от DDoS
- Проверьте себя
- Практические задания
Производительность и отказоустойчивость
-
Монитор производительности
- Настройки модуля
- Публичная часть модуля
- Административные страницы модуля
- Скорость сайта
- Страницы и компоненты
- Хиты
- SQL запросы
- Кеширование
- Таблицы в базе данных
- Индексы
- Настройки и ошибки PHP
- Сервер БД
- История замеров производительности
- Панель производительности
- Панель производительности: поиск "узких" мест сайта
- Закладка Конфигурация
- Закладка Битрикс
- Закладка Разработка
- Закладка Масштабируемость
- Пример нахождения мелких ошибок в производительности
- Кеширование
- Сжатие css и js файлов
- Облако 1С-Битрикс
- Облачные хранилища
-
Веб-кластер
- Что может Веб-кластер
- Настройки модуля и группы серверов
- Репликация
- Master-Slave репликация
- Резервная копия
- Master-master репликация
- Memcached
- Веб-сервера
- Шардинг
- Хранение сессий в базе данных
- Безопасность
- Локальный кеш в кластере
- Варианты конфигурации веб-кластера для решения практических задач
- Практическая реализация веб-кластера на примере Amazon Web Services
- Создание виртуальных машин
- Настройка репликации MySQL
- Аварийное переключение в случае отказа master
- Кластеризация веб-сервера
- Синхронизация данных между серверами
- Кластеризация кеша (memcached)
- Способы балансировки нагрузки между нодами веб-сервера
- Добавление ноды веб-кластера
- Нагрузочное тестирование кластера, анализ различных сценариев и выводы
- Масштабирование
- Проверьте себя
Резервное копирование
Поиск
- Настройки модуля "Поиск"
- Настройки инфоблока для корректного поиска элементов
- Компоненты Поиска
- Ручная настройка поиска Sphinx
- Индексация
- Правила сортировки
- Морфологический поиск
- Статистика
- Логические операторы
- Облако тегов
- Google Sitemap
- Полезные советы
- Поиск элементов инфоблока по их свойствам
- Типичные ошибки
- Проверьте себя
- Практические задания