#redirect #hybris #request-mapping #storefront
#перенаправление #sap-commerce-cloud #запрос-сопоставление #витрина магазина
Вопрос:
Всякий раз, когда я нажимаю на URL https://localhost:9002/trainingstorefront/?site=electronics , он всегда перенаправляет на домашнюю страницу сайта. Как на самом деле происходит сопоставление запросов и где оно определяет, какой сайт должен быть загружен.
Ответ №1:
Сопоставление сайта выполняется с помощью регулярных выражений (urlPatterns), которые вы можете найти под вашим CMSSite.
$siteUid=electronics
# CMS Site
INSERT_UPDATE CMSSite ; uid[unique=true] ; urlPatterns ;
; $siteUid ; (?i)^https?://[^/] (/[^?]*)??(.*amp;)?(site=$siteUid)(|amp;.*)$,(?i)^https?://$siteUid.[^/] (|/.*|?.*)$;
Как вы видите здесь, (?i)^https?://[^/] (/[^?]*)??(.*amp;)?(site=$siteUid)(|amp;.*)$
регулярное выражение связано с сайтом электроники CMSSite. Что означает, что если вы нажмете https://localhost:9002/trainingstorefront/?site=electronics URL-адрес на нем совпадает с сайтом электроники.
Вы можете изменить это регулярное выражение urlPatterns в соответствии с вашими требованиями.
например, я хочу, чтобы пользователь попадал на сайт электроники, когда они попадают https://localhost:9002/trainingstorefront / (без ?site=electronics), для достижения этой цели я добавлю (?i)^https?://[^/].*$
в urlPatterns
$siteUid=electronics
# CMS Site
INSERT_UPDATE CMSSite ; uid[unique=true] ; urlPatterns ;
; $siteUid ; (?i)^https?://[^/] (/[^?]*)??(.*amp;)?(site=$siteUid)(|amp;.*)$,(?i)^https?://$siteUid.[^/] (|/.*|?.*)$,(?i)^https?://[^/].*$ ;
Комментарии:
1. Имейте в виду, что после установления сеанса сайт CMS нельзя изменить или использовать параметр «очистить».
2. Да, потому что во время самого первого запроса он добавляет соответствующий CMSsite к сеансу, чтобы последующий запрос служил для того же CMSsite.