TYPO3 7.6:404错误页面:用数字包装的HTML
我在一个TYPO3网站上创建了自己的“404页面未找到”错误页面,并通过/typo3conf/LocalConfiguration.php实现了它,如下所示,使用页面的URL路径:TYPO3 7.6:404错误页面:用数字包装的HTML,typo3,typo3-7.6.x,Typo3,Typo3 7.6.x,我在一个TYPO3网站上创建了自己的“404页面未找到”错误页面,并通过/typo3conf/LocalConfiguration.php实现了它,如下所示,使用页面的URL路径: return [ ... 'FE' => [ ... 'pageNotFound_handling' => '/page-not-found/', ] ] 现在,当我调用一个不存在的页面时,会显示错误页面,但在HTML源代码之前有一个4位字母数字数
return [
...
'FE' => [
...
'pageNotFound_handling' => '/page-not-found/',
]
]
现在,当我调用一个不存在的页面时,会显示错误页面,但在HTML源代码之前有一个4位字母数字数字(据我所知是十六进制),后面是一个“0”。示例(大多数重新加载后,开头的数字不同):
37b3
...
0
调用错误页面URL本身时,页面将正确返回,没有这些数字
激活或停用RealURL扩展并没有什么区别
提前多谢 我添加了安装工具的完整描述,我想我们可能会在那里找到解决方案 TYPO3应如何处理对不存在/可访问页面的请求。
notfound.HTML
或http://www.example.org/errors/notfound.html
READFILE:fileadmin/notfound HTML)后,该文件将被直接读取和输出
USER\u FUNCTION:fileadmin/class.USER\u notfound.php:USER\u notfound->pageNotFound
,其中文件必须包含一个classUSER\u notfound
,其中包含一个方法pageNotFound()
,其中包含两个参数$param
和$ref
重定向:/page not found/
谢谢你指出这一点,顺便说一句,我将从核心中删除
字符串配置,因为让更多的人陷入这个陷阱是没有意义的。我从安装工具中添加了完整的描述,我想我们可能会在那里找到解决方案
TYPO3应如何处理对不存在/可访问页面的请求。
空(默认值)
显示页面树中向上的下一个可见页面
“正确”或“1”
将显示一条错误消息
字符串
要显示的静态HTML文件(使用正确的标题读取内容和输出),例如notfound.HTML
或http://www.example.org/errors/notfound.html
前缀“重定向:”
如果前缀为“REDIRECT:”它将重定向到前缀后的URL/脚本
前缀“READFILE:”
如果前缀为“READFILE”,则剩余的字符串将是一个HTML文件,在标记“############当前URL#####”和##原因###以及原因文本(例如:READFILE:fileadmin/notfound HTML)后,该文件将被直接读取和输出
前缀“用户功能:”
如果前缀为“USER\u FUNCTION:”将调用一个用户函数,例如USER\u FUNCTION:fileadmin/class.USER\u notfound.php:USER\u notfound->pageNotFound
,其中文件必须包含一个classUSER\u notfound
,其中包含一个方法pageNotFound()
,其中包含两个参数$param
和$ref
您配置的内容:
您正在传递一个字符串,因此TYPO3希望找到一个您没有的文件,因为它更像一个URL
根据您试图实现的目标,我将使用重定向:/page not found/
感谢您指出这一点,顺便说一句,我将从核心中删除字符串配置,因为让更多的人陷入这个陷阱是没有意义的。简而言之:在LocalConfiguration.php的FE部分更改以下行:
'pageNotFound_handling' => '/your404page.html',
到
简而言之:在LocalConfiguration.php的FE部分更改以下行:
'pageNotFound_handling' => '/your404page.html',
到
原因
实际原因是分块内容编码和类型3在某些情况下无法解码的组合。在您的情况下,页面未找到处理程序最终使用GeneralUtility::getUrl()
检索错误页面
如果启用了[SYS][curlUse]
,它将使用cUrl检索页面,没有问题
如果未启用[SYS][curlUse]
,它将打开一个套接字,读取标题,然后读取正文的其余部分。如果Web服务器使用“分块”内容编码,则正文将包含数据块,每个数据块都以十六进制格式的长度行开始。内容以一个空块结尾(当然是长度为“0”的行)。
cUrl显然知道如何解码分块数据
getUrl()
本身不知道如何处理分块数据,并将内容原样用作页面内容
在TYPO3 8 LTS中,guzzle库用于处理HTTP请求。在guzzle代码中,我找不到任何关于处理分块数据的内容。Guzzle将检查cUrl PHP扩展是否存在,并将其用作首选传输。在大多数安装中,cUrl是存在的,因为它自动解码分块数据
'pageNotFound_handling' => 'REDIRECT:/your404page.html',