2016-09-18 60 views
0

在TYPO3 7.6.10此錯誤occures與piBase延伸和realurl 2.0.15:問題與realurl,重定向和緩存在TYPO3

在此擴展,我檢查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」)時,不會發生此錯誤。

+0

哪個TYPO3版本? – Jost

+0

您是否使用chash緩存,並且您的參數是否包含在chash計算中? –

+0

TYPO3 6.2.15和7.6.10 – Sven

回答

1

的問題是在此描述:realurl generates entries without cHash

由於版本2.0。15,realurl不計算鏈接的cHash參數,這些鏈接直接訪問,需要cHash參數來顯示正確的緩存內容,如記錄的詳細頁面。

1

TYPO3存儲緩存所謂的「版本」的頁面與相應的cHash和另外一個版本沒有cHash - 種「默認」頁面。

如果發生了錯誤,當核心驗證cHash時,它會被拒絕並使用url中提供的參數生成頁面。

如果第一次命中(緩存爲空)並且生成了錯誤的cHash頁面,使用URL中的參數,但由於錯誤的cHash,此版本將被理解爲「default」並存儲在緩存中。

您需要在代碼中找到的真正原因。它可能是RealURL配置和代碼的錯誤組合。 例如在RealURL配置中,enableCHashCache被設置爲false,但鏈接提供爲無cHash。

我不能告訴你確切的原因,但你可以檢查它不同的方式:

  1. 設置FE - pageNotFoundOnCHashError在安裝工具,並檢查404錯誤發生,當你訪問www.mypage.com/ list/france/

  2. 禁用RealURL並訪問不同版本的頁面使用不同的country值 - cHash針對不同國家/地區更改還是保持不變?

  3. 檢查網址,由pi_linkTP_keepPIvars_url()生成,有沒有RealURL。它包含cHash

+0

一切配置正確的方式:enableCHashCache爲true,1. pageNotFoundOnCHashError爲true並沒有404頁面顯示,2. cHash更改爲不同的國家,3. url包含cHash – Sven

+0

@Sven 3. url包含cHash也與RealURL啓用? –

+0

啓用RealURL後,url不包含cHash。 RealURL剝離cHash並將其存儲在表「tx_realurl_urlcache」列「original_url」中。 – Sven