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、存在しないと見なすことはできません。拡張機能が必要なすべてのパラメータを取得していなくてもかまいません。

2つの解決策があります。1つはページレンダリングプロセスの開始時に実行される小さな拡張機能を作成することです。パラメータが存在するかどうかを確認し、既存の無効化されていない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>セクションにリダイレクトタグを追加するだけです(頭のてっぺんから書きます。だから自分でデバグしてください、pls)

ページにモジュールを57追加extension teamplateし、セットアップでパラメータが存在するかどうかを確認するための条件を使用します。Template

[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 に答える