【问题标题】:News + realURL + i18n in Typo3 = cHash errorTypo3 中的 News + realURL + i18n = cHash 错误
【发布时间】:2014-02-10 02:18:15
【问题描述】:

我设法让新闻 (tx_news) 在默认语言下使用 realurl。然后我想本地化新闻,所以我为他们创建了翻译。但是,当我访问非默认语言的列表视图时,它会失败并显示

Request parameters could not be validated (&cHash comparison failed)

失败的链接不包含cHash,看起来像这样

http://host.com/mysite/en/about-us/

可能是什么原因以及如何解决?这是realURL设置

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']=array (
  '_DEFAULT' => 
  array (
    'init' => 
    array (
      'enableCHashCache' => true,
      'enableCHashCache' => 1,
      'respectSimulateStaticURLs' => 0,
      'appendMissingSlash' => 'ifNotFile,redirect',
      //'adminJumpToBackend' => true,
      'enableUrlDecodeCache' => true,
      'enableUrlEncodeCache' => true,
      'emptyUrlReturnValue' => '/mysite/',
    ),
    'pagePath' => 
    array (
      'type' => 'user',
      'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
      'spaceCharacter' => '-',
      'languageGetVar' => 'L',
      'rootpage_id' => '1',
      'firstHitPathCache'=> '1',
    ),
    'preVars' => 
    array (
      0 => 
      array (
        'GETvar' => 'L',
        'valueMap' => 
        array (
          'cs' => '1',
        ),
        'noMatch' => 'bypass',
      ),
    ),
    'fixedPostVars' => array(
        '19' => array(
        array(
            'GETvar' => 'tx_news_pi1[controller]',
            'noMatch' => 'bypass',
        ),
        array(
            'GETvar' => 'tx_news_pi1[action]',
            'noMatch' => 'bypass',
        ),
        array(
            'GETvar' => 'tx_news_pi1[news]',
            'lookUpTable' => array(
                'table' =>
            'tx_news_domain_model_news',
            'id_field' => 'uid',
            'alias_field' => 'title',
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'useUniqueCache_conf' => array(
                'strtolower' => 1,
                'spaceCharacter' => '-',
            ),
            'enable404forInvalidAlias' => '1',
            'languageGetVar' => 'L',
            'languageExceptionUids' => '',
            'languageField' => 'sys_language_uid',
            'transOrigPointerField' => 'l10n_parent',
        ),
      ),
    ),
    ),

    ),

);

【问题讨论】:

  • 提个建议,如果您正在构建自定义应用程序,请不要使用 CMS。我发现让 CMS 满足你的意愿比从头开始构建要困难得多。 CMS 适用于简单的网站;但是,如果您尝试构建具有某些高级功能的东西,则应该从头开始构建。
  • 我完全不同意从头开始构建任何东西,尤其是当你独自工作时。一个人无法像 TYPO3 安全团队、Symfony 或 Zend 那样实现安全。没有必要发明轮子,除非它是一个更好的轮子:) 一个人很难靠自己做到这一点。

标签: php typo3 realurl


【解决方案1】:

由于这个错误,我打了很多仗。

转到 Typo3 安装工具 => 所有配置并更改此属性的值 1 => 0。

[FE] [pageNotFoundOnCHashError] = 0

希望这能解决问题!!!

【讨论】:

  • @webMan: 是的,它降低了安全性,它有助于 TYPO3 的升级。
【解决方案2】:

我似乎已经通过清空数据库中的tx_realurl_chashcache 来修复它。

【讨论】:

  • 这是正确的答案,如果你禁用 [FE] [pageNotFoundOnCHashError] 你将不再有typo3的检查,安全性也是一个问题。较新的数据库不支持此表名。我把所有的都清空了。
【解决方案3】:

我不得不为页面禁用缓存。在我的网站上,似乎“no_cache”参数混淆了 chash 计算。这样我可以保持 - 我认为很重要 - 安全设置 [FE][pageNotFoundOnCHashError] = 0

【讨论】:

    【解决方案4】:

    在 Typo3 8.x 版本中:

    点击后台的“Speaking Urls”模块,然后点击“Flush all entries”

    现在,当您浏览前端时,这些条目将被重新创建。每件事都应该可以正常工作。

    基本上,我们在这里删除所有页面的所有页面路径条目,以便再次创建它们。

    您也可以通过选择“删除此页面的所有条目”选项来删除所选页面的条目

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多