繁体   English   中英

TYPO3中的realurl,重定向和缓存问题

[英]Issue with realurl, redirect and caching in TYPO3

在带有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/时,将显示某个国家/地区的页面(不是默认页面,例如国家/地区“ france”)。 这意味着,TYPO3在页面www.mypage.com/list/france/上创建了页面www.mypage.com/list/的缓存条目,但是对于该URL,由于重定向,因此永远不会创建缓存条目。

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

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

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

如果发生错误,当内核验证cHash时,将使用URL中提供的参数拒绝cHash并生成页面。

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

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

我无法告诉您确切的原因,但是您可以通过其他方式检查它:

  1. 当您访问FE - pageNotFoundOnCHashError在安装工具中设置FE - pageNotFoundOnCHashError并检查是否发生404错误。

  2. 禁用RealURL并访问具有不同country值的网页的不同版本cHash是否在不同国家/ cHash更改或保持不变?

  3. 检查pi_linkTP_keepPIvars_url()使用和不使用RealURL生成的URL。 它包含cHash吗?

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

从2.0.15版开始,realurl不会为链接直接计算链接的cHash参数,链接需要直接使用cHash参数显示正确的缓存内容,例如记录的详细信息页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM