【问题标题】:TYPO3 Core exception: "Id was out of domain" instead of Error 404TYPO3 核心异常:“Id 超出域”而不是错误 404
【发布时间】:2020-08-07 09:14:50
【问题描述】:

由于页面结构中的一些更改,我们的许多页面都更改了 pid。在 SEO 术语中并不重要,因为会说话 url,但是有一堆第三方链接带有错误的 pid,例如。 g.:

https://www.myDomain.de/index.php?id=46&no_cache=1&sword_list[0]=someWord

uid 为 46 的页面存在,但不是预期的页面,它现在位于不同的域下。所以结果如下异常:

Core: Exception handler (WEB): Uncaught TYPO3 Exception: #1518472189: 
ID was outside the domain | TYPO3\CMS\Core\Error\Http\PageNotFoundException 
thrown in file typo3/sysext/frontend/Classes/Controller/ErrorController.php 
in line 80. Requested URL: 
https://www.myDomain.de/index.php?id=46&no_cache=1&sword_list[0]=someWord

我的问题:

我可以告诉 TYPO3 不要抛出异常,而是将所有外部域事件简单地视为 404 并重定向到错误页面吗?

谢谢!

【问题讨论】:

    标签: typo3 typo3-9.x


    【解决方案1】:

    应该可以通过在站点管理模块中添加 404 错误处理来实现: 站点管理->站点->您的站点->选项卡“错误处理”->新建

    【讨论】:

    • 我认为问题是这在域外时不起作用(当在数据库中找不到页面 UID 时会发生这种情况)
    • 嗯,在 TYPO3 9.5 多域站点上可以正常工作:mydomain.de/?id=6,其中 uid 6 的页面来自该安装中的另一个域。站点配置如下:如何处理错误:PHP 类,ErrorHandler 类目标(FQCN):Vendor\ExtPage\Error\ErrorHandler,类实现:类 ErrorHandler 扩展 TYPO3\CMS\Core\Error\PageErrorHandler\FluidPageErrorHandler...跨度>
    • “不起作用”是什么意思?您是否在前端或日志中收到任何错误消息?
    • 我得到了我的自定义 404 页面,在我的 ErrorHandler 类中使用流畅的 StandaloneView 配置并返回 new HtmlResponse($content, $this->statusCode);
    • 听起来很有效。我可能将您的评论误读为无效;)
    【解决方案2】:

    根据我的经验,在这种情况下显示带有正确状态代码的 404 页面,不幸的是不太明显。

    ?id=... 删除/移动页面(因此未映射到正确的站点)的最简单方法是使用 EXT:redirect 或在网络服务器级别重定向到有用的页面。

    这是一个带有 EXT:redirect: 的示例

    如果您可以重定向到的新内容中没有可比的内容,您可以显示您的 404 页面,例如通过直通([PT] 与 Apache mod_rewrite https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html)。在这种情况下,您应该确保发送 404 状态。 (例如,通过 .htaccess,404 页面上的 userFunc,...)。

    我希望其他人有一个更简单的想法。

    【讨论】:

    • 几页的好主意 - 在我的情况下,我们必须处理几千页...... :-)
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多