如何防止TYPO3规范标签中的外来GET参数?

How to prevent foreign GET parameters in TYPO3's canonical tag?

如果在前端使用未预见的 GET 参数调用未缓存的页面,并且已从外部来源的 link 附加到 URL,例如跟踪参数或更糟糕的事情,例如…

https://www.example.com/?note=any-value

…然后这个外来参数在自动生成的规范标签中传递,由TYPO3的核心扩展ext:seo创建。它看起来像这样:

<link rel="canonical" href="https://www.example.com/?note=any-value&amp;cHash=f2c206f6f14a424fdbf82f683e8bf383"/>

另外,页面是用这个参数保存在缓存中的。这意味着后续访问者也会收到这个不正确的规范标签,即使他们在没有参数的情况下调用页面 https://www.example.com/

这是一个错误(在 TYPO3 10.4.15 上测试过)还是可以通过配置禁用所有未知参数?

如果知道参数,可以在配置中排除:

[FE][cacheHash][excludedParameters] = L,pk_campaign,pk_kwd,utm_source,utm_medium,…

我只关心没有预料到的参数。把这个概念反过来,基本上排除所有参数,除了一些自定义的允许参数之外,可能是有意义的,但我不知道到目前为止是否可行。

知道了。实际上,TYPO3 已经为其他常见的跟踪和附加参数处理了这些,例如 Lutm_campaignfbclid 等。可以找到排除参数的整个列表 in the source code

要添加您自己的,只需 add/modify typo3conf/AdditionalConfiguration.php 文件即可,例如:

<?php

$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'note';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'foo';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'bar';

<?php

$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'] = array_merge(
    $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'],
    ['note', 'foo', 'bar'],
);

毕竟不要忘记清除缓存:D(这应该是TYPO3的口号)

这是一个错误。扩展 urlguard2 解决了这个问题。