0

此错误发生在带有 piBase 扩展和 realurl 2.0.15 的 TYPO3 7.6.10 中:

在这个扩展中,我正在检查一个 GET 参数,例如一个国家。如果未提供此参数,我将重定向到同一页面,并使用默认国家/地区作为参数:

if(!$this->piVars['country']) {
  $this->piVars['country'] = 'germany';
  \TYPO3\CMS\Core\Utility\HttpUtility::redirect($this->pi_linkTP_keepPIvars_url(array(), true), \TYPO3\CMS\Core\Utility\HttpUtility::HTTP_STATUS_303);
}

这意味着,访问者例如调用 url www.mypage.com/list/ 并被重定向到 www.mypage.com/list/germany/

这工作正常,但经过一段时间后,一些访问者是一个页面,重定向停止工作。在浏览器中打开 www.mypage.com/list/ 时,会显示某个国家/地区的页面(不是默认页面,例如国家“法国”)。这意味着,TYPO3 在页面 www.mypage.com/list/france/ 上为页面 www.mypage.com/list/ 创建了一个缓存条目,但是对于这个 url,由于重定向,不应该创建一个缓存条目.

我可以通过将页面的缓存时间设置为 1 分钟来重现此错误。然后我等待一分钟,然后加载网址 www.mypage.com/list/france/。现在,当打开 www.mypage.com/list/ 时,没有重定向并显示法国。

禁用 realurl(或仅从 realurl 配置中删除参数“country”)时,不会发生此错误。

4

2 回答 2

1

TYPO3 将具有相应cHash的页面的所谓“版本”存储在缓存中,另外还有一个没有 cHash 的版本 - 一种“默认”页面。

如果发生错误,当核心验证 cHash 时,它会被拒绝并生成页面,使用 url 中提供的参数。

如果第一次命中(缓存为空)并使用来自 URL 的参数生成错误的 cHash 页面,但由于错误的 cHash,此版本将被理解为“默认”并存储在缓存中。

您需要在代码中找到的真正原因。它可能是 RealURL 配置和代码的错误组合。例如,在 RealURL 配置中将 enableCHashCache设置为false,但提供了不带 cHash 的链接。

我不能告诉你确切的原因,但你可以用不同的方式检查它:

  1. 在安装工具中设置FE - pageNotFoundOnCHashError并检查是否发生 404 错误,当您访问 www.mypage.com/list/france/

  2. 禁用 RealURL 并访问具有不同country值的页面的不同版本 -cHash不同国家/地区会发生变化还是保持不变?

  3. 检查由pi_linkTP_keepPIvars_url()有和没有 RealURL 生成的 url。它包含cHash吗?

于 2016-09-19T09:42:03.940 回答
1

问题在这里描述:realurl 生成没有 cHash 的条目

从 2.0.15 版本开始,realurl 不再计算链接的 cHash 参数,链接可以直接访问,并且需要 cHash 参数来显示正确的缓存内容,例如记录的详细信息页面。

于 2016-09-27T06:06:40.537 回答