TYPO3 7.6:404错误页面:HTML包裹在数字中

时间:2017-01-02 09:35:52

标签: typo3 typo3-7.6.x

我在TYPO3网站上创建了自己的“404找不到页面”错误页面,并通过/typo3conf/LocalConfiguration.php使用页面的Speaking URL路径实现如下:

return [
    ...
    'FE' => [
        ...
        'pageNotFound_handling' => '/page-not-found/',
    ]
]

现在,当我调用一个不存在的页面时,会显示错误页面,但是有一个4位数的字母数字(就我现在所见的十六进制而言)在HTML源代码和“0”之后它。示例(大多数重新加载后开头的数字不同)

37b3
<!DOCTYPE html>
...
</html>
0

当调用错误页面URL本身时,页面将正确返回,而不包含这些数字。

激活或停用RealURL扩展程序没有任何区别。

提前多多感谢!

3 个答案:

答案 0 :(得分:1)

我在安装工具中添加了完整的说明,我想我们可能会在那里找到解决方案。

TYPO3应如何处理对不存在/可访问页面的请求。

  1. 为空(默认)

    显示页面树中向下的下一个可见页面。

  2. 'true'或'1'

    显示错误消息。

  3. <强>字符串

    要显示的静态HTML文件(使用正确的标题读取内容和输出),例如let supportView: UIView = UIView() let containerView = UIView() override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(true) self.containerView.frame = CGRect(x: self.view.frame.size.width - 100, y: 200, width: 225, height: 70) print(self.containerView.frame.height) self.containerView.backgroundColor = UIColor.gray self.containerView.layer.cornerRadius = 20 self.view.addSubview(self.containerView) let controller = storyboard!.instantiateViewController(withIdentifier: "Storyboard2") addChildViewController(controller) containerView.addSubview(controller.view) controller.didMove(toParentViewController: self) } notfound.html

  4. 前缀“REDIRECT:”

    如果前缀为“REDIRECT:”,它将重定向到前缀后的URL /脚本。

  5. 前缀“READFILE:”

    如果以“READFILE”作为前缀,那么它将期望剩余的字符串是一个HTML文件,在将标记“### CURRENT_URL ###”替换为REQUEST_URI和### REASON后,将直接读取和输出该文件。带有原因文本的##,例如:http://www.example.org/errors/notfound.html

  6. 前缀“USER_FUNCTION:”

    如果以“USER_FUNCTION:”作为前缀,则调用用户函数,例如READFILE:fileadmin/notfound.html其中文件必须包含一个类USER_FUNCTION:fileadmin/class.user_notfound.php:user_notFound->pageNotFound,其中包含方法user_notFound,其中包含两个参数pageNotFound()$param

  7. 您配置的内容:

    你正在传递一个字符串,因此TYPO3希望找到一个你没有的文件,因为它更像是一个URL。

    从你尝试实现的目标开始,我会选择$ref

    感谢你指出这一点,我将从核心删除REDIRECT:/page-not-found/配置,因为让更多的人进入这个陷阱是没有意义的。

答案 1 :(得分:1)

简而言之:更改LocalConfiguration.php的FE部分中的以下行:

'pageNotFound_handling' => '/your404page.html',

'pageNotFound_handling' => 'REDIRECT:/your404page.html',

答案 2 :(得分:0)

原因

实际原因是分块内容编码和TYPO3在某些情况下无法解码的组合。在您的情况下,页面未找到处理程序最终使用GeneralUtility::getUrl()来检索错误页面。

如果您启用了[SYS][curlUse],则会使用cUrl检索页面,并且没有问题。

如果您没有[SYS][curlUse]启用它,它将打开一个套接字,读取标题然后读取正文的其余部分。如果网络服务器使用&#34; chunked&#34; Content-Encoding正文将包含数据块,每个块以一个长度为十六进制格式的行开头。内容以空块结束(当然还有一行长度为#34; 0&#34;)。 cUrl显然知道如何解码分块数据。

getUrl()本身不知道如何处理分块数据并将内容用作页面内容。

在TYPO3 8 LTS中,guzzle库用于处理HTTP请求。在guzzle代码中,我无法找到有关处理分块数据的任何信息。 Guzzle将检查cUrl PHP扩展是否存在并将其用作首选传输。在大多数安装中,存在cUrl,因为这会自动解码分块数据,所以不会出现任何问题。我必须使用禁用cUrl的PHP来测试guzzle以查看问题是否也存在于v8 / master中。

解决方法/溶液

如果您的安装中启用了PHP扩展程序cUrl,则只需在安装工具中设置[SYS][curlUse]即可。 404页面内容周围的数字将消失。