You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3中如何从站点配置获取所有已知基础URL(含变体及多语言)

TYPO3 9/10 站点URL获取方案

你可以直接使用TYPO3核心封装的SiteFinderAPI实现需求,全程不需要自行解析遍历站点配置文件:

实现步骤

  1. 获取TYPO3\CMS\Core\Site\SiteFinder实例:推荐使用依赖注入方式注入,非DI上下文可以通过GeneralUtility::makeInstance生成。
  2. 调用getAllSites()方法获取当前实例下所有站点的配置对象。
  3. 遍历每个站点对象,分别拉取默认基础URL、多语言对应URL、站点变体URL。

代码示例

<?php
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;

// 依赖注入上下文请直接注入SiteFinder,无需手动生成实例
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
$allSites = $siteFinder->getAllSites();
$allValidBaseUrls = [];

foreach ($allSites as $site) {
    // 收录站点默认基础URL
    $defaultBase = (string)$site->getBase();
    if (!in_array($defaultBase, $allValidBaseUrls)) {
        $allValidBaseUrls[] = $defaultBase;
    }

    // 收录站点所有语言对应的基础URL
    foreach ($site->getAllLanguages() as $language) {
        $langBase = (string)$language->getBase();
        if (!in_array($langBase, $allValidBaseUrls)) {
            $allValidBaseUrls[] = $langBase;
        }
    }

    // 收录站点配置的所有变体URL(含开发、测试等不同环境的配置)
    foreach ($site->getBaseVariants() as $baseVariant) {
        $variantBase = (string)$baseVariant->getBase();
        if (!in_array($variantBase, $allValidBaseUrls)) {
            $allValidBaseUrls[] = $variantBase;
        }
    }
}

后续使用

最终得到的$allValidBaseUrls数组已经包含了你需要的所有已知基础URL,你可以直接提取每个URL的域名部分,和用户输入URL的域名做比对即可完成本地URL校验逻辑。

内容的提问来源于stack exchange,提问作者Rudy Gnodde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 00:27:03