簡體   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