Как убрать /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С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    17780    19    22    

16

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19844    13    17    

16

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14421    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1168    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 7OH 70 06.12.22 09:55 Сейчас в теме
А под апач можете такой же пример сделать?
3. bayselonarrend 2087 13.12.22 08:45 Сейчас в теме
(1)Не знаю как, не работаю с апач
5. lostcay 9 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 2087 13.12.22 08:53 Сейчас в теме
(2) Да, все верно. При этом пользователя выкинет в 404. Можно использовать регулярку proj/hs/([_0-9a-z-]+) с условием Does not match the pattern в самом начале, тогда у пользователя будет возможность зайти и по exemple.com/proj/hs/Index и по exemple.com
Оставьте свое сообщение