Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3 RealURL重定向循环,用于链接和标题相同的页面_Typo3_Typo3 6.2.x - Fatal编程技术网

TYPO3 RealURL重定向循环,用于链接和标题相同的页面

TYPO3 RealURL重定向循环,用于链接和标题相同的页面,typo3,typo3-6.2.x,Typo3,Typo3 6.2.x,经过多次调试后,大部分内容似乎都无关紧要。阅读EDIT2了解您需要了解的内容 我最近接管了TYPO3网页的开发,并在realurl_conf.php中添加了两个新的postVars 它在主语言上可以正常工作,但在某些页面上,当以不同于主语言的方式查看时,我陷入了重定向循环 循环临时重定向代码307可以通过打开一个网站来复制,比如2是英语的语言ID,子页面是英语的标题。如果我通过链接打开页面,我会得到正确的页面,而UnterSite是页面的主要语言标题 不幸的是,我无法看到模式,哪些页面受到影响。

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

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

它在主语言上可以正常工作,但在某些页面上,当以不同于主语言的方式查看时,我陷入了重定向循环

循环临时重定向代码307可以通过打开一个网站来复制,比如2是英语的语言ID,子页面是英语的标题。如果我通过链接打开页面,我会得到正确的页面,而UnterSite是页面的主要语言标题

不幸的是,我无法看到模式,哪些页面受到影响。共有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类为not advanced的其余代码中,问题不会发生,但行为不符合预期


EDIT2:经过大量的Xdebug调试,我意识到有一个页面有一个标题,比如子页面,还有一个包含该页面链接的辅助菜单。打开URL example.com/subpage/时,它检测到subpage是指向subpage的链接,并重定向到subpage。因此,如果存在多个匹配项,我想寻找一种使页面优先于链接的方法。

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

'valueDefault' => 'de',

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

TYPO3有一个.htaccess文件,在uu.htaccess下提供。 从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的u3;.htaccess中的条目进行比较。 也许你遗漏了L参数


你应该给出一个关于网站重定向的详细例子。

我今天刚刚遇到第二个网站在升级TYPO3和realurl后出现了这个问题

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

我这边的情况是:

类型3.6.2.27; realurl 2.1.1/2.1.4这是迄今为止遇到的两种情况,但这可能发生在所有2.x版本中; 在同一“路径级别”具有相同名称的页面和快捷方式;请记住,这可能是相同的页面树级别,也可能是不同的页面树级别,但如果父页面选中了“排除说出URL”复选框,则会使两个元素处于相同的“路径级别”。 在我看来,这似乎只有在安装realurl 2.x时才会出现。在升级之前,这两个网站都有realurl 1.12.x或1.13.x,没有问题

在代码级别解决该问题之前,一个可能的解决方案是将快捷方式的“讲话URL路径段”更改为与其名称不同的任何内容。路径段不在任何地方使用,但更改它可以使您摆脱这种麻烦


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

realurl recirect循环的另一个来源:


对我来说,这是一个破损的手动realurl配置,它设置了一个不存在的rootpage\u id。切换到自动配置或更改到正确的根页面id都解决了问题。

嗨,Franz,谢谢你的提示。我在网上找到的大多数示例都包括valueDefault行,尽管默认值是在打字脚本中设置的。我把它移走了——似乎没什么区别。很不幸,我的问题仍然没有解决。感谢您的提示,重定向肯定来自PHP,因为access.log的代码是200,而浏览器收到的是307临时重定向。我在我的问题中添加了更多的细节,更详细地描述了这个问题。你说页面优先于链接是什么意思?什么二级菜单?所以表tx\u realurl\u缓存中有两个具有相同uri的条目。一个具有真实页面类型标准的ID,另一个具有指向第一个提到的页面的链接的ID。辅助菜单只是一个文件夹,它表示一个特殊菜单,该菜单有条件地显示,但大部分时间是隐藏的。这个问题只出现在非默认语言中,并且具有一定的随机性-它取决于两个相同路径中的哪一个首先写入数据库。