我在使用realURL Cache时遇到了一些问题。例如:
“主页”页面的网址为/the-shoe/home
。翻译成瑞士(德国)的网址是:/ch/der-schuh/home
。这里的问题是网址/ch/the-shoe/home
也有效。
我的想法是,这是一个缓存问题。因为页面被翻译并且在页面标题被翻译之前页面被调用
所以我尝试用后端模块“Speaking URL”清理缓存。我在URL缓存中Flush all entries
并删除了此页面中的路径和路径缓存中的语言。
但这并没有改变任何事情。我仍然可以致电/ch/der-schuh/home
和/ch/the-shoe/home
,两者都有效。调用两个URL后,我也可以在URL缓存中再次看到它们(但不在路径缓存中):
那么为什么这是一个问题
<f:link_page>
和co。使用“错误”网址(而非翻译网址)创建链接。现在我的问题是,这个问题来自哪里?我该如何解决?看起来只是清除缓存并不能解决问题。
任何想法?
答案 0 :(得分:4)
这是一个RealURL错误,我实际上已经通过修补RealURL修复了一次(当时在RealURL v1中,但是我确定你会找出它现在的代码行)。
应用此修补程序后,再也无法访问包含原始页面标题的翻译页面(我的项目需要避免重复的内容和页面)。
diff --git a/realurl/class.tx_realurl_advanced.php b/realurl/class.tx_realurl_advanced.php
index 5af10a6..2860eb1 100644
--- a/realurl/class.tx_realurl_advanced.php
+++ b/realurl/class.tx_realurl_advanced.php
@@ -1073,6 +1073,11 @@ class tx_realurl_advanced {
// Process titles. Note that excluded segments are also searched
// otherwise they will never be found
$uidTrack[$row['uid']] = $row;
+ // If the page has a page translation, don't add the titles from the default language to the list
+ // of valid pages, the translation is processed below.
+ if ($this->pObj->getDetectedLanguage() > 0) {
+ continue;
+ }
foreach ($segTitleFieldArray as $fieldName) {
if ($row[$fieldName]) {
$encodedTitle = $this->encodeTitle($row[$fieldName]);
答案 1 :(得分:0)
在realURL v2.0.14中修复了一半的问题。
现在最好的解决方法是禁用realURL的缓存。