Изменить url страницы 1с битрикс
Работа с URL-адресами в Bitrix является одним из важных моментов в работе всей системы. До появления ядра версии D7 работа с URL адресами производилась посредством классов CMain::GetCurPageParam и DeleteParam. На нашем сайте ранее публиковались примеры формирования URL с передачей многомерных массивов, а также произвольных URL посредством использования GetCurPageParam.
В D7 для работы с ссылками появился аналог этим классам – Uri. Работа с классом в некоторых моментах стала сложнее, т.к. каждый аспект работы класса стал более самостоятельным, реализованным в отдельных методах.
Класс Uri в Bitrix D7
Примеры работы c классом Uri
В представлении класса Uri в системе Bitrix каждый URL является объектом, с параметрами которого класс и работает посредством отдельных методов. Поэтому в перед тем как работать с URL необходимо инициализировать объект класса Uri.
Создание объекта из URL строки
Создать объект класса Uri мы можем из обычной строки URL, после чего уже работать с этим объектом.
Создание объекта из текущего URL
Довольно часто приходится работать с параметрами URL текущей страницы. Для работы с URL текущей страницы аналогично необходимо создать объект класса Uri. Получить текущий URL, и создать объект класса для работы с ним можно таким образом:
После того как создан объект класса Uri, мы можем работать с методами класса. Так к примеру, мы можем получить составляющие части сайта.
Методы класса Uri
Таблица доступных методов в данный момент времени:
Метод | Описание | С версии |
---|---|---|
addParams | Метод добавляет параметры в запрос или заменяет существующие параметры. | 15.5.10 |
deleteParams | Метод удаляет параметры из запроса. | 15.5.10 |
getFragment | Метод возвращает фрагмент. | 14.0.15 |
getHost | Метод возвращает хост. | 14.0.15 |
getLocator | Метод возвращает URI без фрагмента. | 15.5.10 |
getPass | Метод возвращает пароль. | 14.0.15 |
getPath | Метод возвращает путь. | 14.0.15 |
getPathQuery | Метод возвращает путь с запросом. | 14.0.15 |
getPort | Метод возвращает номер порта. | 14.0.15 |
getQuery | Метод возвращает запрос | 14.0.15 |
getScheme | Метод возвращает схему. | 14.0.15 |
getUri | Метод возвращает URI с фрагментом, если он имеется. | 15.5.10 |
getUser | Метод возвращает пользователя. | 14.0.15 |
setHost | Метод устанавливает хост | 14.0.15 |
setPath | Метод устанавливает путь. | 15.5.10 |
setUser | Метод устанавливает пользователя. | 16.5.7 |
setPass | Метод устанавливает пароль. | 16.5.7 |
Изменение параметров в URL
Методы класса Uri позволяют так же добавлять параметры в существующий URL, а также менять различные составляющие URL-адреса.
Таким образом, можно довольно гибко оперировать данными URL в различных участках кода. К примеру, это может потребоваться тогда, когда необходимо сформировать URL-адреса для списка ссылок в шаблоне компонента. Класс будет работать везде где подключается ядро, Bitrix-а, поэтому его можно использовать как в компонентах, так и в отдельных скриптах-обработчиках, к примеру, в ajax.
Обработка адресов (UrlRewrite) применяется для того, чтобы скрипт мог отвечать не только по своему физическому, но и по любому другому указаному адресу. Например, можно задать настройки обработки адресов, чтобы скрипт в файле /fld/c.php, отвечающий по адресу
отвечал также по адресу
Адрес, по которому будет отвечать скрипт, не должен физически существовать на сервере. Если такой адрес физически существует, то будет вызван скрипт по этому адресу. Система обработки адресов запущена в этом случае не будет.
Правила обработки
Правила обработки адресов настраиваются отдельно для каждого сайта и хранятся в корне сайта в файле urlrewrite.php. Файл содержит массив $arUrlRewrite, каждая запись которого является правилом обработки адреса. Файл urlrewrite.php имеет следующий вид:
Каждое правило должно содержать уникальное в рамках сайта условие выполнения правила. Условие выполнения записывается в ключ "CONDITION" массива и является шаблоном Perl-совместимого регулярного выражения. Например, условие:
указывает, что данное правило должно применяться для всех адресов, которые начинаются с подстрок вида:
и пользователь запросил страницу:
которая физически не существует, то система обработки адресов подключит скрипт:
и пользователем запрошена страница:
то для формирования адреса скрипта, который будет подключен, выполнится код:
и будет подключен скрипт:
и пользователем запрошена страница:
то для формирования адреса скрипта, который будет подключен, выполнится код:
и будет подключен скрипт:
Правило может содержать имя компонента, который создал это правило. Это имя записывается в ключ "ID". При автоматическом пересоздании файла правил urlrewrite.php с помощью средств административной части сайта пересоздаются только правила, у которых заполнен ключ "ID". Эти правила пересоздаются на основании анализа физических файлов в папке сайта. Правила с пустым ключом "ID" при автоматическом пересоздании файла правил не изменяются.
Подключение системы обработки адресов
Перед началом использования система обработки адресов должна быть подключена на сайте. Для этого необходимо:
- если у вас на веб-сервере настроена обработка ошибки 404 (например, для Apache установлена директива ErrorDocument 404 /404.php ), то вы должны изменить файл /404.php, вставив в самое начало файла команду:
- если вы для Apache используете модуль mod_rewrite, то в его настройках вы можете указать (например, как в штатной установке в файле .htaccess):
Примеры правил и условий для модуля mod_rewrite
- Настройка переадресации (301 редирект) на папки со слешем ( / ) в конце:
- Переадресация (301 редирект) с индексной страницы index.php на саму папку (корень) для всех страниц сайта:
Поддержка компонентов 2.0
При добавлении на страницу компонента с поддержкой ЧПУ ("человеко-понятный URL") (если файл сохраняется с помощью API), автоматически создаётся правило обработки адреса. Если страница создаётся не с помощью API, а, например, записывается через FTP, то необходимо выполнить пересоздание правил (кнопка на панели инструментов на странице настройки правил обработки адресов).
Поддержка ЧПУ включается в компоненте с помощью предопределённого входного параметра SEF_MODE. При этом в предопределённом входном параметре SEF_FOLDER устанавливается папка, в которой работает компонент. Папка может быть виртуальной (т.е. физически может не существовать). При сохранении страницы с размещённым на ней компонентом, переключенным в режим ЧПУ (параметр SEF_MODE равен Y), через стандартный интерфейс правило обработки адресов создаётся следующим образом: в ключ условия применения шаблона ("CONDITION") записывается регулярное выражение, полученое из папки в параметре SEF_FOLDER, в ключ "ID" записывается имя компонента, в ключ пути ("PATH") записывается физический адрес страницы.
Например, пусть компонент "bitrix:catalog" размещён на странице /fld/c.php и его подключение выглядит следующим образом:
Тогда при сохранении страницы /fld/c.php в системе обработки адресов добавится запись:
Таким образом, при запросе адресов, начинающихся со строки /mycatalog/, будет подключаться скрипт /fld/c.php. В этом скрипте запрошенный адрес может быть проанализирован и выполнены требуемые действия.
Зачем нужны короткие URL ссылки?
Укороченные ссылки являются одним из способов передачи URL адресов, если реальная ссылка длинная то ее можно при этом методе сократить до 10 – 20 символов.
Сама ссылка открывается не напрямую, а через промежуточный ресурс, где располагается база коротких URL адресов.
Рассмотрим часть популярных ресурсов для укорачивания URL ссылок:
Принцип работы у них простой, вставляем свой URL жмем кнопку создать, получаем короткую ссылку, которую в дальнейшем используем по своему усмотрении.
Всем нам известно назначение данных сервисов, но мало кто знает, что в 1С Битрикс есть аналогичный функционал, который не хуже, а даже удобнее, а чем удобнее, читайте далее.
Настройка коротких URL в 1С Битрикс
Механизм коротких URL можно настроить двумя способами, через административную часть сайта, для этого перейдем в Настройки продукта, Обработка адресов, Короткие ссылки. Жмем кнопку добавить, в поле ссылка вводим свой URL куда мы будем перенаправлять пользователя. Допустим мы хотим поделится какой то картинкой с яндекся, для этого копируем URL.
Добавляем ссылку в наше поле, а в поле «Короткая ссылка» видим префикс, который автоматически сформировался и добавился к нашему домену. Как видите в начале его стоит символ «Тильда» и она предназначена для того что бы сами не забыли что это является короткая ссылка. Эта тильда не обязательна, и несет только информационный характер.
Мы можем целиком изменить префикс, прописать в нем свое название, к примеру «kart» или даже указать его на кириллице, допустим «картинка», ниже установить 301 или 302 HTML статус для робота. И нажмем кнопку применить.
Копируем нашу ссылку, вставляем в браузер, жмем перейти, и мы попадаем напрямую к нашей картинке.
Второй способ формирования коротких URL ссылок это через панель управления на визуальной части сайта. Перешли на сайт, кликаем «Короткий URL», появляется форма с заполненными полями, где в поле ссылка сформирован URL нашей странички, которую можем изменить, и прописать тот, что нужен нам. Допустим эта главная страничка сайта указать свою короткую ссылку и сохраниться. Далее эту ссылку можно использовать в Email рассылке и отследить количество переходов пользователей по ней.
Я думаю многие из Вас, придумают массу вариантов, где это можно задействовать.
Обязательно поделись в комментариях какими методами пользуешься для составления URL адресов именно ты.
Как изменить ссылку
?action=viewArticle&articleId111111 имеется ссылка вот такого вида как мне привести ее к виду.
Изменить ссылку в шаблоне
Здравствуйте, подскажите пожалуйста, в файле index.php шаблона "it_healthcare2" платформы Joomla.
Изменить значение по нажатию на ссылку
Есть тема, таблица themes поле status равно открыта. Есть ссылка, по нажатию на которую, нужно.
Копируете шаблон к себе, и меняете в нем формат ссылок, потом в urlrewrite.php создаете правило чтобы на странице детального просмотра отображалась детальная информация. Так же на детальной странице в параметрах компонента ELEMEN_ID указываете дату, которую передаете через параметры. В общем как-то так.
Не уверен что это самое оптимальное решение, но работать будет точно.
Добавлено через 51 секунду
Дату ищите в arResult, и уже средствами php приводите ее к нужному виду.
ну совсем понял, как сделать что бы на странице детального просмотра отображалась детальная информация Можно по подробнее объяснить.
Я решил проблему проще, не знаю правильнее это или нет но вот как я справился со своей проблемой, в компоненте bitrix:news я в чпу полностью стер ссылку детального просмотра ну и в шаблоне news.list я просто добавил в конец ссылки значения свойства "Дата фотоотчета". и получается вот как сейчас строится ссылка, имя сайта/dynamic/дата фотоотчета. Ну вроде бы все работает. dynamic это каталог ЧПУ.
Добавлено через 1 минуту
Но все равно спасибо, это вы меня навели на ту мысль что можно изменить вывод ссылки в шаблоне
Добавлено через 26 минут
не, там то я дату изменил, а ссылка то не так должна выглядеть)) Что то я намудрил, все таки сейчас буду пробовать по вашему методу
По моему "методу" комплексный компонент использовать не надо, есть только 2 страницы, 1 с news.list, другая с news.detail, я недавно делал что-то похожее, только вместо даты подставлял код элемента, если интересует, то могу скинуть код.
ну если не сложно, то можете скинуть)
Добавлено через 1 минуту
меня сейчас все интересует, если не в этот раз так в другой обязательно понадобится)
Код передается через GET параметр, а это правило.
Ссылка на детальную новость выглядит так: /about/news/detail/news_code/
Добавлено через 11 минут
Решил свою проблему благодаря Вам=))
ну собственно вот это и непонятно))
Если дата фотоотчета это пользовательское свойство и для каждого элемента инфоблока она будет уникальна, то Вам в шаблоне компонента надо формировать ссылку вида dynamic//.
В файле urlrewrate.php добавляете массив следующего вида:
?echo>
Подразумевается что в папке dynamic у Вас есть 2 файла index.php (в нем лежит news.list) и detail.php (в нем лежит news.detail).
В файле detail.php тогда должен быть след. код:
Теперь Ваша задача стоит чтобы найти ID элемента по пользовательскому полю. Гулите, смотрите документацию, тут я не подскажу к сожалению.
Добавлено через 9 минут
Вот тут есть пару мыслей ничего.
Добавлено через 7 минут
Попробуйте поискать на ихнем форуме, скорее всего что нибудь будет, и не такое "кастыльное" как я предлагаю=)
Как изменить ссылку на phpmyadmin в nginx?
Здравствуйте, с nginx работаю впервые. всего лишь несколько дней, доки почитал, но тем не менее не.
— Здесь всегда пора пить чай. Мы не успеваем даже посуду вымыть!
— И просто пересаживаетесь, да? — догадалась Алиса.
— Совершенно верно, — сказал Болванщик. — Выпьем чашку и пересядем к следующей.
— А когда дойдете до конца, тогда что? — рискнула спросить Алиса.
Мы начали вести блог в далеком 2007 году. Сейчас в нем около 300 статей, число растет. Стараемся выдерживать темп 6 — 8 статей в месяц.
Первые несколько лет мы не делали рубрикацию и размещали статьи единым списком.
С развитием компании и блога ввели рубрики: Проекты, Мысли, Жизнь, КаПли (для статей о Корпоративном Портале с адресом /drops/ естественно ;). Отделили статьи о веб-проектах от статей о семинарах и новых технологиях. Были «лихие нулевые», писали обо всем без разбора.
Впоследствии появились разделы Подкаст (для видео), Брендинг, Битрикс24 и Интернет-маркетинг для соответствующих подразделений. Появилось ощущение, что если блог распечатать (с комментариями), хватит на маленькую библиотеку с картотекой. Для уменьшения бардака энтропии и наведения порядка решили уменьшить число рубрик и оптимизировать адреса категорий.
Цена ошибки была высока. Одно неверное движение, и сайт лишится нескольких тысяч пользователей в месяц — всех, кто переходит в блог из поисковых систем.
Кроме оптимизации адресов мы решали проблему аналитики трафика по разделам блога. Мы хотели получить ответ на вопрос — какие темы статей наиболее востребованы. Какие материалы добавить в другие рубрики, чтобы они стали интересными?
Все статьи блога хранятся с URL-ами вида: /blog///
Наша задача — изменить у некоторых статей название категории так, чтобы не потерять поисковый трафик.
Для решения задачи нам потребовались:
- аналитик для исследования трафика и составления таблицы редиректов;
- веб-разработчик для настройки перенаправлений.
Важно не рубить с плеча и подойти к задаче ответственно — в случае неудачи вы рискуете посещаемостью сайта!
Подготовка страниц для 301 редиректов
Для удобства работы мы воспользовались стандартным инструментов экспорта элементов из инфоблока и получили таблицу.
Столбец Посещаемость собирали из отдельной таблицы, добытой из Яндекс.Метрики. Думали, пригодится для оценки “важности” статьи. В итоге решили не использовать и изменили часть популярных URL-ов.
В таблицу добавили колонки «Новый раздел» и «Символьный код нового раздела», а также «Новый URL» и «Redirect 301». Работа заключалась в том, чтобы назначить статье «Новый раздел», остальные данные получали автоматически на основе формул. После окончания составления таблицы останется только скопировать столбец с редиректами и вставить в файл .htaccess на сервере.
Столбец «Совпадение» необходим, чтобы исключить редирект «сам на себя» для статей, которые сохранили адрес.
Работа по изменению категорий в таблице и на сайте заняла несколько часов. Каждую статью пришлось открыть, прочитать наискосок и определить новую категорию. Работа оправдала себя, мы получили дополнительную пользу в виде:
- Нашли несколько статей без полезной информации и безжалостно удалили. Редирект в таких случаях ставили на категорию.
- Нашли несколько дублей и в одном случае три статьи (!) об одном и том же. В этом случае оставили самую интересную, остальные перенаправляли на нее.
- Нашли новую проблему — вакханалия в тегах (служебное поле 1С-Битрикс), которые каждый автор ставит как заблагорассудится, привела к тому, что на сайте появились сотни страниц типа “Поиск по тегу”. В ближайшее время запланирована оптимизация тегов статей.
Важно понимать, что подготовительную работу в таблице можно делать сколько угодно долго, но замену адресов и настройку редиректов на сайте лучше выполнять одним днем и быстро. Это позволит сократить потери поискового трафика.
Теперь мы можем сравнивать трафик по направлениям и делать выводы:
Настройка редиректов в Битрикс
Сайты на платформе 1С-Битрикс работают на веб-сервере Apache. Редиректы нужно прописывать в специальном файле .htaccess. Файл должен находиться строго в корне сайта и иметь точку в названии.
Так как выполняем внутренние редиректы (не меняем домен), записи будут вне других инструкций в виде:
Redirect 301 /blog/likbez/information-to-be-published/ /blog/projects/information-to-be-published/
Для редиректов типа межхостовое перенаправление (другой домен, протокол, редирект на www) в Битриксе инструкции нужно писать в это место файла .htaccess:
Для настройки редиректов нельзя использовать админку, используйте только FTP-клиент. Рекомендуем настроить один-два перенаправления, тщательно проверить поведение на www- и без-www домене. Только после этого настраивать весь список.
Передаем страницы на переобход для поискового робота
Последний шаг — сообщить поисковым роботам о том, что вы поменяли адреса страниц. Для этого сделали следующее:
- создали новую карту сайта sitemap.xml (Битрикс умеет автоматически);
- отправили карту сайта на переобход в Яндекс и Google с помощью Инструментов для вебмастеров.
Тем, кто поделится статьей в социальных сетях, на почту придет подробная инструкция о настройке sitemap.xml в 1С-Битрикс.
Изменение поискового трафика
Поисковый трафик составляет 90% посетителей нашего блога. Мы боялись на длительное время потерять посетителей. Опасения не оправдались. Результат:
- Мы сохранили трафик из Google. Поисковик мгновенно все переиндексировал и уже через пару дней показывал в выдаче новые адреса.
- Мы в течение 1 недели наблюдали потери трафика из Яндекса. Так как большую часть читателей в наш блог приводит Google, на общую картину Яндекс повлиял минимально — за неделю потеряли чуть меньше 20% поискового трафика на страницы блога.
- Еще через неделю трафик из Яндекса вернулся в норму.
Если вы постоянно обновляете сайт, активно пишете статьи и выкладываете материалы, рано или поздно вы столкнетесь с похожей проблемой. Важно действовать по инструкции и в сжатые сроки. Если стремитесь сделать сайт лучше, поисковики всегда поддержат вас!
В нашей команде есть как специалисты-аналитики для исследования трафика из поисковых систем, так и веб-разработчики. Если вам требуется изменить структуру сайта, обращайтесь.
Мы собрали список распространенных редиректов для сайтов на Битрикс и оформили в виде универсальной инструкции. Чтобы получить файл, поделитесь статьей в социальных сетях. Удачных перенаправлений!
ИНТЕРВОЛГА — компетентный веб-интегратор. Наша специализация — комплексная поддержка и продвижение сайтов на 1С-Битрикс
Веб-интеграция это создание крупных информационных веб-систем , глубоко интегрированных в бизнес Заказчика. Это снижение затрат на работу с клиентами, рост продаж и автоматизация процессов.
ИНТЕРВОЛГА – компетентный веб-интегратор . Мы можем решить все задачи веб-интеграции собственными силами. Большинство наших проектов – комплексные, интеграционные.
Наш принцип: приносить пользу бизнесу клиента за счет осмысленного применения веб-технологий.
Читайте также: