TYPO3:RealURL + tt_news + 404不起作用

时间:2012-07-20 13:56:21

标签: http-status-code-404 typo3 tt-news realurl

我想给页面提供一个特殊的URL(id = 57),其中tt_news的SINGLE视图是,所以我用它来配置RealURL:

    'fixedPostVars' => array(
        '57' => array(
            array(
                'GETvar' => 'tx_ttnews[tt_news]',
                'lookUpTable' => array(
                    'table' => 'tt_news',
                    'id_field' => 'uid',
                    'alias_field' => 'title',
                    'addWhereClause' => ' AND NOT deleted',
                    'useUniqueCache' => 1,
                    'useUniqueCache_conf' => array(
                        'strtolower' => 1,
                        'spaceCharacter' => '-',
                    ),
                ),
            ),
        ),
    ),

问题是404中的重定向不起作用:

http://www.mypage.com/blog/artikel/asdasd --->工作良好。转到第404页。

http://www.mypage.com/blog/artikel/whatever/whateveragain --->工作良好。转到第404页。

http://www.mypage.com/blog/artikel/whatever --->不会重定向到404.我得到“没有给出news_id。”

1 个答案:

答案 0 :(得分:1)

TYPO3该页面存在且包含插件是正常的,因此不能将其视为不存在它不关心扩展没有获得所有必需的参数。

有两个解决方案,我建议写一个小扩展,它将在页面渲染过程开始时运行,将检查参数是否存在以及它是否指向现有和未禁用的tt_news记录,在其他如果它应该返回完全限定的404状态并重定向到您的404页面 - 这将有助于目的。

function main($content, $conf) {

    $newsParams = t3lib_div::_GET('tx_ttnews');
    if (is_array($newsParams) && intval($newsParams['tt_news']) > 0) {
        $foundItems = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid', 'tt_news', 'deleted=0 AND hidden=0 AND uid=' . intval($newsParams['tt_news']));

        if (count($foundItems) == 1) {
            return null; // if news exists and is available - return null
        }
    }

    // If above condition aren't met, set redirect header
    // return null after that to avoid futher code processing

    header('Location: http://yourdomain.tld/404.html');
    return null;

}

仅在页面= 57的TypoScript中添加以下行:

page.1 < plugin.tx_yourext_pi1

其他解决方案

要简单得多,只是检查SINGLE视图是否需要URL中的参数:&amp; tx_ttnews [tt_news] = 123存在并且大于0,如果不是只是将重定向标记添加到页面的<head>部分(从我的头顶写作,所以你自己写一下吧,请)

在您的网页57上添加extension teamplate Template模块,并在设置中使用condition检查param是否存在:

[globalVar = GP:tx_ttnews|tt_news < 1]
  page.headerData.1 = TEXT
  page.headerData.1.value = <meta http-equiv="refresh" content="0;url=http://www.mypage.com/404">
[global]