如何防止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&cHash=f2c206f6f14a424fdbf82f683e8bf383"/>
另外,页面是用这个参数保存在缓存中的。这意味着后续访问者也会收到这个不正确的规范标签,即使他们在没有参数的情况下调用页面 https://www.example.com/。
这是一个错误(在 TYPO3 10.4.15 上测试过)还是可以通过配置禁用所有未知参数?
如果知道参数,可以在配置中排除:
[FE][cacheHash][excludedParameters] = L,pk_campaign,pk_kwd,utm_source,utm_medium,…
我只关心没有预料到的参数。把这个概念反过来,基本上排除所有参数,除了一些自定义的允许参数之外,可能是有意义的,但我不知道到目前为止是否可行。
知道了。实际上,TYPO3 已经为其他常见的跟踪和附加参数处理了这些,例如 L
、utm_campaign
、fbclid
等。可以找到排除参数的整个列表 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 解决了这个问题。
如果在前端使用未预见的 GET 参数调用未缓存的页面,并且已从外部来源的 link 附加到 URL,例如跟踪参数或更糟糕的事情,例如…
https://www.example.com/?note=any-value
…然后这个外来参数在自动生成的规范标签中传递,由TYPO3的核心扩展ext:seo创建。它看起来像这样:
<link rel="canonical" href="https://www.example.com/?note=any-value&cHash=f2c206f6f14a424fdbf82f683e8bf383"/>
另外,页面是用这个参数保存在缓存中的。这意味着后续访问者也会收到这个不正确的规范标签,即使他们在没有参数的情况下调用页面 https://www.example.com/。
这是一个错误(在 TYPO3 10.4.15 上测试过)还是可以通过配置禁用所有未知参数?
如果知道参数,可以在配置中排除:
[FE][cacheHash][excludedParameters] = L,pk_campaign,pk_kwd,utm_source,utm_medium,…
我只关心没有预料到的参数。把这个概念反过来,基本上排除所有参数,除了一些自定义的允许参数之外,可能是有意义的,但我不知道到目前为止是否可行。
知道了。实际上,TYPO3 已经为其他常见的跟踪和附加参数处理了这些,例如 L
、utm_campaign
、fbclid
等。可以找到排除参数的整个列表 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 解决了这个问题。