private SelectorData trieMatchSelector(final ServerWebExchange exchange, final String pluginName, final String path) {
        if (!selectorMatchConfig.getTrie().getEnabled()) {
            return null;
        }
        SelectorData selectorData = null;
        ShenyuTrieNode shenyuTrieNode = selectorTrie.match(path, pluginName);
        if (Objects.nonNull(shenyuTrieNode)) {
            LogUtils.info(LOG, "{} selector match path from shenyu trie, path:{}", pluginName, path);
            List<?> collection = shenyuTrieNode.getPathCache().get(pluginName);
            if (CollectionUtils.isNotEmpty(collection)) {
                Pair<Boolean, SelectorData> selectorDataPair;
                if (collection.size() > 1) {
                    selectorDataPair = matchSelector(exchange, ListUtil.castList(collection, SelectorData.class::cast));
                } else {
                    Object selectorObj = collection.stream().findFirst().orElse(null);
                    SelectorData selector = Objects.nonNull(selectorObj) ? (SelectorData) selectorObj : null;
                    boolean cached = Objects.nonNull(selector) && selector.getConditionList().stream().allMatch(condition -> URI_CONDITION_TYPE.equals(condition.getParamType()));
                    selectorDataPair = Pair.of(cached, selector);
                }
                selectorData = selectorDataPair.getRight();
                if (selectorDataPair.getLeft() && Objects.nonNull(selectorData)) {
                    cacheSelectorData(path, selectorData);
                }
            }
        }
        return selectorData;
    }
Handle rule if null mono.

@param pluginName the plugin name
@param exchange the exchange
@param chain the chain
@return the mono
shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java