【问题标题】:TYPO3 RealURL redirect loop for link and page with same titleTYPO3 RealURL 重定向循环,用于具有相同标题的链接和页面
【发布时间】:2014-08-14 11:53:29
【问题描述】:

经过多次调试后,大部分内容似乎都无关紧要。阅读 EDIT2 了解您需要了解的内容。

我最近接手了一个 TYPO3 网页的开发,并在 realurl_conf.php 中添加了两个新的 postVars

它在主要语言上按预期工作,但在某些页面上以不同于主要语言的方式查看它时,我陷入了重定向循环。

循环(临时重定向 - 代码 307)可以通过打开网站来复制,例如 http://example.com/subpage/?L=2,其中 2 是英语的语言 ID,subpage 是英语的标题。如果我通过链接http://example.com/unterseite/?L=2 打开页面,我会得到正确的页面,而unterseite 是主要语言的页面标题。

很遗憾,我看不到模式,即哪些页面受到影响。共有 3 个页面显示了这种不当行为,其中两个具有子子页面,第三个是没有子页面的标准页面。其他 11 个页面按预期工作,另外 2 个页面有子页面。

所有页面都是标准内容类型。

一个失败的 realurl_conf.php 看起来像这样:

<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array (
    '_DEFAULT' => array (

        'pagePath' => array (
            'type' => 'user',
            'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
        ),  
    ),
); 

我似乎没有找到问题,上周我一直在谷歌上搜索。

非常感谢任何提示或具体帮助。

编辑:删除了不必要的行。剩余代码可靠出现问题 使用 tx_realurl 类(非高级),不会出现问题,但行为不如预期。

EDIT2: 经过大量的 Xdebug 调试后,我意识到有一个标题为 Subpage 的页面,并且有一个包含指向该页面的链接的二级菜单。打开 URL example.com/subpage/ 时,它检测到子页面是指向子页面的链接并重定向到子页面。所以我正在寻找一种让页面优先于链接的方法,如果有多个匹配项。

【问题讨论】:

  • “让页面优先于链接”是什么意思?什么二级菜单?
  • 所以表 tx_realurl_cache 中有两个具有相同 uri 的条目。一个具有真实页面的 ID(标准类型),另一个具有指向第一个提到的页面的链接的 ID。二级菜单只是一个文件夹,代表一个特殊菜单,有条件地显示,但大部分时间隐藏。该问题仅出现在非默认语言中,并且具有一定的随机性 - 它取决于两个相同路径中的哪一个首先写入数据库。

标签: typo3 typo3-6.2.x


【解决方案1】:

我猜这是错误的,应该删除:

'valueDefault' => 'de',

L 参数的默认值应在 TypoScript 中设置,而不是在 RealUrl 中。而且我认为这里必须输入一个数字值,如果使用的话。

【讨论】:

  • 您好,Franz,感谢您的提示。我在网上找到的大多数示例都包括 valueDefault 行,尽管默认值是在 TypoScript 中设置的。我删除了它 - 似乎它没有任何区别。所以不幸的是,我的问题仍未解决。
【解决方案2】:

TYPO3 在“_.htaccess”下提供了一个“.htacess”文件。 从 TYPO3 6.2.4 我得到这个:

RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]

# Main URL rewriting.
# For httpd.conf, use this line instead of the next one:
# RewriteRule .* /TYPO3root/index.php [L]
RewriteRule .* index.php [L]

将您的“.htacess”文件与 TYPO3 的“_.htaccess”中的条目进行比较。 也许您在那里缺少 L 参数。

您应该详细说明您网站上的重定向。

【讨论】:

  • 感谢提示,重定向肯定来自 PHP,因为 access.log 的代码为 200,而浏览器收到 307(临时重定向)。我在我的问题中添加了更多细节,更详细地描述了这个问题。
【解决方案3】:

我今天刚遇到第二个站点在升级 TYPO3 和 realurl 后遇到这个问题。

TL;DR 解决方案:将快捷方式的“语音 URL 路径段”更改为与其名称不同的任何内容

我这边的场景是:

  • TYPO3 6.2.27;
  • realurl 2.1.1 / 2.1.4(这是迄今为止遇到的两种情况),但所有 2.x 版本都可能出现这种情况;
  • 相同的“路径级别”具有同名的页面和快捷方式;请记住,这可能是相同的 pagetree 级别 或不同的 pagetree 级别,但具有选中的“Exclude from speak URL”复选框的父页面以将两个元素置于相同的“路径级别”。

在我看来,这仅在安装 realurl 2.x 时出现。这两个网站在升级前都有 realurl 1.12.x 或 1.13.x,没有任何问题。

在代码级别解决问题之前,可能的解决方案将快捷方式的“语音 URL 路径段”更改为与其名称不同的任何内容。路径段在任何地方都没有使用,但改变它可以让你摆脱这个麻烦。

这停止了我这边的几个页面/快捷方式对在两个网站上的重定向。

【讨论】:

    【解决方案4】:

    realurl recirect 循环的另一个来源:

    对我来说,这是一个损坏的手动 realurl 配置,其中设置了不存在的 rootpage_id。切换到自动配置或更改为正确的 rootpage_id 都解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2018-12-11
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多