Как убрать /hs/ и имя виртуального каталога из URL для http-сервиса (IIS)

13.12.22

Интеграция - WEB-интеграция

Переписывание входящего user-friendly URL (без hs) для понимания его http-сервисом 1С.

Если у вас есть http-сервис, который используется не для обмена с другим ПО, а, например, выводит страницы уже конечному пользователю под доменным именем, лишние знаки в адресной строке ему ни к чему. Для более серьезных Web-проектов, (если вы решили что Node.js, тащемто не нужен) предназначенных для работы вне узкого круга ограниченных людей вашего общения, лишние 2 сегмента URL могут и вовсе вызвать проблемы. Обычно это связано с первым попаданием на сайт и решается кодом 308 (Перемещено навсегда) для главной страницы "exemple.com" на "exemple.com/proj/hs/Index" (proj - имя виртуального каталога проекта в IIS), а там уже все ссылки и навигация прописываются с /hs/. Однако это не слишком элегантно, и может вызвать вопрос у пользователя или даже у 1С Москва.

Более красивым и дружелюбным решением будет убрать лишние сегменты, для чего в IIS используется URL Rewrite

Вообще URL Rewrite может переписывать и перенаправлять по заданным шаблонам любые адреса. Самыми базовыми и распространенными вариантами являются перенаправления с http на https, добавление www. и удаление последнего слэша в адресе. Must have

Устанавливается этот компонент, как и любой другой, из WPI 

 

 

Выглядит внутри он вот так. Тут есть 2 списка правил с разным предназначением и меню действий. Для создания нового нажмем Add Rule(s)...


 

Когда я увидел это меню впервые, я очень обрадовался, увидев уже готовый шаблон User-friendly URL (Удобный для пользователя адрес), но, как оказалось, это не для нас сделано и не для таких как мы, (правит только ASP адреса вида exemple.com/default.aspx?c=main&n=parametr) поэтому выбираем Blank rule (Пустое правило)

 

Тут все довольно просто, но опишу по полям (думаю, с русской версией по смыслу проблем возникнуть не должно):

Name - любой 

Requested URL - Matches the Pattern означает, что адрес попадает под правило, если соответствует шаблону ниже

Using - шаблон пишется регулярками, а здесь можно выбрать стандарт. (RE, WildCards) Для нас роли не играет: звездочка она везде звездочка.

Pattern - (.*) т.е. все адреса вообще.

Conditions - более детальные условия. Можно выбрать И (Match All) и ИЛИ (Match Any), если условий несколько. Сейчас здесь два правила:

{REQUEST_FILENAME} is Not a File и {REQUEST_FILENAME} is Not a Directory.

Они нужны для того, чтобы /hs/ по этому правилу не дописывалось к картинкам, стилям и пр. файлам, не связанным с 1С. 

Action -

Redirect перенаправляет на другую страницу, когда правило срабатывает, т.е перейдя на exemple.com пользователь увидит в адресной строке exemple.com/proj/hs/Index. Тоже вариант, но для нашей цели подходит хуже.

Rewrite переписывает адрес на стороне сервера, т.е. перейдя на exemple.com пользователь так и останется на exemple.com, но до 1С оно дойдет уже как proj/hs

Rewrite URL - шаблон изменения URL. в данном случае мы берем все, что идет после доменного имени {REQUEST_URL} и просто пихаем спереди [Каталог]/hs/

 

 

Теперь нам нужно добавить еще одно правило, ограничивающее доступ к адресам с hs. Сейчас при попытке зайти на exemple.com/proj/hs/Index к этому URL будет дописан еще один набор proj/hs, что приведет к ошибке. Мы можем блокировать доступ к изначально "правильным" адресам, чтобы такого не произошло

Вот так выглядит второе правило: все адреса, изначально имеющие 1С-ные сегменты, отправляются на главную страницу сайта.



 

Если вам необходимо сохранить доступ и к новому и к изначальному вариантам, второе правило вам не нужно. Просто вместо (.*) в начале первого правила установите регулярку proj/hs/  и Requested URL в Does not match the pattern. Это будет означать, что правило применимо для всех адресов, не содержащих конструкцию proj/hs/.

 

Вообще механизм Rewrite URL очень удобный при решении проблем с маршрутами. Есть хорошая статья на Microsoft Learn (на английском), хотя в 1С область применения и ограничена.

Вступайте в нашу телеграмм-группу Инфостарт

IIS Web Веб http-сервисы Веб-разработка URL Веб-сервер Настройка Сервер

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    22930    33    24    

26

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17280 руб.

20.12.2024    5028    22    4    

24

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    21595    62    52    

40

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять товары в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически синхронизирует ваш каталог. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12000 руб.

29.08.2025    1382    2    0    

3

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

5196 руб.

28.04.2016    99618    114    218    

362

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    40697    74    45    

31
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 7OH 70 06.12.22 09:55 Сейчас в теме
А под апач можете такой же пример сделать?
3. bayselonarrend 3004 13.12.22 08:45 Сейчас в теме
(1)Не знаю как, не работаю с апач
5. lostcay 10 06.05.24 11:33 Сейчас в теме
2. JohnyDeath 302 12.12.22 15:46 Сейчас в теме
Если оставить первое правило и не включать второе, то по идее пользователю, переходящему на адрес exemple.com/proj/hs/Index
будет дописано еще разок proj/hs, что в итоге отправит в 1С запрос на адрес /proj/hs/proj/hs/Index
Надо, наверное, паттерн-таки прописывать. Или я что-то недопонимаю?
4. bayselonarrend 3004 13.12.22 08:53 Сейчас в теме
(2) Да, все верно. При этом пользователя выкинет в 404. Можно использовать регулярку proj/hs/([_0-9a-z-]+) с условием Does not match the pattern в самом начале, тогда у пользователя будет возможность зайти и по exemple.com/proj/hs/Index и по exemple.com
Для отправки сообщения требуется регистрация/авторизация