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 缓存中再次看到它们(但不在路径缓存中):
那么为什么这是个问题
- 我不希望 2 URL 导致相同的内容
- 有时
<f:link_page>
和公司。使用 "wrong" URL(不是翻译的)创建一个 Link。
- 当我在后端登录时,"wrong" 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 的缓存。
我在使用真正的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 缓存中再次看到它们(但不在路径缓存中):
那么为什么这是个问题
- 我不希望 2 URL 导致相同的内容
- 有时
<f:link_page>
和公司。使用 "wrong" URL(不是翻译的)创建一个 Link。 - 当我在后端登录时,"wrong" 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 的缓存。