realURL:清理 path-cache 和 url-cache

realURL: Cleanup path-cache and url-cache

我在使用真正的URL 缓存时遇到了一些问题。例如:

"home" 页面的 URL 是 /the-shoe/home。 url 翻译成瑞士(德语)是:/ch/der-schuh/home。这里的问题是 URL /ch/the-shoe/home 也有效。

我的想法是,这是一个缓存问题。因为在页面标题翻译之前页面被翻译并且页面被调用

所以我尝试用 backend-module "Speaking URLs" 清理缓存。我在 URL 缓存中 Flush all entries 并删除了此页面的路径和路径缓存中的语言。

但这并没有改变什么。我仍然可以调用 /ch/der-schuh/home/ch/the-shoe/home 并且两者都有效。在调用两个 URLs 之后,我还可以在 URL 缓存中再次看到它们(但不在路径缓存中):

那么为什么这是个问题

现在我的问题是,这个问题是从哪里来的?我该如何解决?看来只清缓存并不能解决问题

有什么想法吗?

这是一个 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]);

该问题已一半已在 realURL v2.0.14 中修复。

目前最好的解决方法是禁用 realURL 的缓存。