Hybris ?сайт = электроника всегда перенаправляет на сайт электроники

#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.