gpt4 book ai didi

typo3 - 迁移到 TYPO3 9+ 后继续重定向旧的 realurl url

转载 作者:行者123 更新时间:2023-12-04 15:17:41 26 4
gpt4 key购买 nike

我想使用过期 url 的 realurl 内存为升级到 TYPO3 9+ 的站点生成 301 并避免 404。

比如TYPO3 9之前,获取/my-old-page重定向到/my-new-page,因为/my-old-page 仍在 realurl 数据库表中。现在,由于迁移到 TYPO3 9,获取 /my-old-page 会抛出 404。

TYPO3 9 提供了一个升级向导,可以将 realurl 页面路径/别名转换为 slug,但不会将 realurl 的过期页面路径/别名转换为 sys_redirect

保持重定向的 realurl 内存的最佳策略是什么:

  • 将所有过期的 url/别名迁移到 sys_redirect?这可能会导致 sys_redirect 表变大,出现性能问题
  • 在 RedirectHandler 之后运行一个中间件来搜索过期的 url 并在找到时触发 301?这将为每个请求进行额外的数据库查询。
  • 创建一个 PageNotFoundHandler,如果找不到页面,它会搜索过期的 url? TYPO3 只允许每个状态代码有一个 ErrorHandler,所以这可能是个问题
  • 列出 .htaccess 中的重定向

我所说的“最佳策略”是指:

  • 性能可能很重要(我有超过 10,000 个过期的 url)
  • 如果可能,重定向应由编辑器维护(如 sys_redirect)

感谢您的见解!

最佳答案

我的第二个解决方案(我正在使用 - 稍微修改 - 在生产中)是使用 TYPO3:

  • 为 404 创建基于 PageErrorHandlerInterface 的页面错误处理程序。检查 URL 的 realurl 表。如果命中,则重定向到新 URL。
  • 如果没有成功,回到你通常会做的事情,例如显示错误页面。

这有以下优点(对 TYPO3 重定向扩展):

  • 它只在 404 上触发,而不是在每个页面上触发。
  • 此外,您不必将重定向迁移到 sys_redirects,您可以按原样使用旧的 realurl 表。

存储库\路径映射存储库:

  public function findPageidForPathFromRealurl(string $path, int $languageId) : int
{
$path = ltrim($path, '/');

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_realurl_pathdata');
$uid = $queryBuilder->select('tx_realurl_pathdata.page_id')
->from('tx_realurl_pathdata')
->join(
'tx_realurl_pathdata',
'pages',
'p',
$queryBuilder->expr()->eq('tx_realurl_pathdata.page_id',$queryBuilder->quoteIdentifier('p.uid'))
)
->where(
$queryBuilder->expr()->like('tx_realurl_pathdata.pagepath', $queryBuilder->createNamedParameter($path)),
$queryBuilder->expr()->eq('tx_realurl_pathdata.language_id', $queryBuilder->createNamedParameter($languageId, \PDO::PARAM_INT)),
$queryBuilder->expr()->eq('p.sys_language_uid', $queryBuilder->createNamedParameter($languageId, \PDO::PARAM_INT))
)
->orderBy('tx_realurl_pathdata.uid', 'DESC')
->execute()
->fetchColumn(0);
$this->logger->debug("findPageidForPathFromRealurl: path=$path language=$languageId returns $uid");
return (int)$uid;
}

关于typo3 - 迁移到 TYPO3 9+ 后继续重定向旧的 realurl url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64006064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com