0

我想给 tt_news 的 SINGLE 视图所在的页面(id=57)一个特殊的 URL,所以我用它来配置 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”。

4

1 回答 1

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;

}

在 TypoScript 中仅在 page=57 上添加这一行:

page.1 < plugin.tx_yourext_pi1

其他解决方案

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

在您的页面上添加57模块并在设置使用条件下检查参数是否存在:extension teamplateTemplate

[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]
于 2012-07-20T19:28:07.600 回答