交换具有相同域的站点

2020-09-15 04:40发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,伙计们

在有两个国家/地区特定的网站时,我有一个要求。 (例如foo和goo),但我的域保持不变。 ( www.mycompany.com )。 所以我需要两个这样的网站


  1. www.mycompany.com/foo

  2. www.mycompany.com/goo


这两个国家/地区都有其特定的目录,基础商店和站点。

只需要了解在这种情况下处理站点切换的最佳方法是什么。

感谢Bhanu P Jain

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,伙计们

在有两个国家/地区特定的网站时,我有一个要求。 (例如foo和goo),但我的域保持不变。 ( www.mycompany.com )。 所以我需要两个这样的网站


  1. www.mycompany.com/foo

  2. www.mycompany.com/goo


这两个国家/地区都有其特定的目录,基础商店和站点。

只需要了解在这种情况下处理站点切换的最佳方法是什么。

感谢Bhanu P Jain

付费偷看设置
发送
9条回答
四川大学会员
1楼-- · 2020-09-15 05:00

嗨,

假设您已经定义了两个webSite(`CMSSite`),剩下要做的就是为每个webSite定义合适的 urlPatterns ,这样您就可以从 网址 给出您的示例,您可以执行以下操作:

  1. 坐在foo:(?i)^ https?://mycompany。\ .com(:[\ d] +)?/foo/.*$

  2. site goo:(?i)^ https?://mycompany。\ .com(:[\ d] +)?/goo/.*$

随时更改或添加其他样式,直到您拥有所需的内容。

Baoming ROSE
2楼-- · 2020-09-15 04:50

嗨, 站点之间的切换机制是在 CMSSiteFilter 中实现的,即使我们拥有相同的店面,它也可以工作(正是出于这个原因)。

CMSSiteFilter将处理任何请求,它将获取所有具有至少一个与您的url(请求url)相匹配的url模式的cmssSite并切换到。

因此,要知道该网址将切换到哪个站点,请使用Regex工具并检查该网址是否与urlPatterns之一匹配。

Youssef。

clever101
3楼-- · 2020-09-15 05:07

我现在做了以下更新:

CMS网站网址

  1. 站点foo:(?i)^ https?://mycompany。[^/] +/store +(/[az] [az])+ foo +(|/。 | \?。 )$

  2. site goo:(?i)^ https?://mycompany。[^/] +/store +(/[az] [az])+ goo +(|/。 | \?。 )$

实际网站网址

  1. 站点foo: https://mycompany.com :9002/store/en?clear = true&country = foo

  2. 站点goo: https://mycompany.com :9002/store/en?clear = true&country = 咕

我修改了CMSSiteFilter的'processNormalRequest'方法,如下所示:

如果(cmsSiteModel == null || StringUtils.contains(queryString,CLEAR_CMSSITE_PARAM))

{

最终的字符串国家/地区= httpRequest.getParameter(PARAM_COUNTRY);

if(StringUtils.isEmpty(country)){

/没有从URI获取的国家/

httpResponse.sendError(MISSING_CMS_SITE_ERROR_STATUS,MISSING_COUNTRY_ERROR_MESSAGE);

返回false;

}

最终字符串absoluteURL = StringUtils.removeEnd(currentRequestURL,"/")+"/" +国家/地区

+(StringUtils.isBlank(queryString)?"":"?" + queryString);

cmsSiteModel = getContextInformationLoader()。initializeSiteFromRequest(absoluteURL);

}

现在在查询参数中发送国家/地区,将其添加到绝对URL时,同时获取requestURI的网站效果很好。

问题现在是在同一浏览器中处理两个站点。 例如:如果我在tab1中打开foo站点并登录。现在在tab2中打开goo站点,tab1的站点更改为goo,但用户仍登录。

如何处理这种情况。 如果我希望两个站点都在同一浏览器中维护自己的会话怎么办?

愤怒的猪头君
4楼-- · 2020-09-15 05:11

您好Bhanu

我也遇到同样的问题,您是否找到了在同一浏览器的两个选项卡中打开两个具有相同域的差异站点的解决方案?

感谢您的响应。

关于Sandeep

绿领巾童鞋
5楼-- · 2020-09-15 05:09

请查看yacceleratorstorefront中的EnhancedCookieGenerator。 您需要修改此类的行为,以将/foo/或/goo/添加到JSESSIONID cookie的路径中,以便生成单独的会话cookie。 您还需要取消设置默认会话cookie(映射到路径"/"),可以在web.xml中进行此操作。

  
    <!-会话超时30分钟->
     30 
    
   0 
    
   
  
黑丝骑士
6楼-- · 2020-09-15 05:01

我们已经实现了EnhancedCookieGenerator更改和web.xml更改,但是服务器节点面临着一个问题。 如果主页请求将发送到node1服务器,而combined.js(granule)将发送到其他节点服务器,则我们被合并了。js显示的是找不到404页。 知道我们如何解决这个问题吗?

一周热门 更多>