如何在AEM6.3中为除prod以外的所有环境添加"No index" meta标签?

How to add "No index" meta tag for all the environments other than prod in AEM6.3?

我需要在 html 页面的头部部分添加“无索引”元标记,用于所有环境(舞台、质量检查等),除了prod/live 站点避免那些环境被搜索引擎搜索到。

我计划使用“runmodes”来检查环境并为每个环境设置条件,不要为 prod runmode 添加 "no index" .

有没有更好的方法来实现这个?

我看到的唯一选择是创建一个使用 class/Sling 模型,连接 SlingSettingsService docs here 然后使用 SlingSettingsService#getRunModes() 获取所有运行模式并检查所需的运行模式。

这是一个简单的吊索模型,用于检查产品运行模式。您可以以相同的方式根据您的特定运行模式添加更多检查。

@Model(adaptables = {SlingHttpServletRequest.class})
public class AbstractFacilityComponent
{

  @OSGiService SlingSettingsService slingSettings;


  boolean isProd;

  @PostConstruct
  protected void postConstruct()
  {
    Set<String> runmodes = slingSettings.getRunModes();
    isProd = runmodes.contains("prod");

    return;
  } 

  public boolean isProd(){ return isProd; }

}

您可以更改部署应用程序的上下文,而不是更改生产环境和预生产环境之间的行为。

想到以下选项:

  1. 不允许 public 访问您的预生产环境。 (例如,不要给您的预生产环境一个 public IP 地址,限制访问相同的 network/VPN,等等)

  2. 如果您在 AEM 前面有 Apache,我假设每个环境都有不同的 Apache 实例或不同的 Apache vhost。您可以将预生产虚拟主机配置为始终添加 the x-robots: noindex header

通常,您应该将非产品环境保密。如果 google 可以索引您的登台或开发实例,那么其他人也可以访问它。在我看来,这是一个很高的安全风险。