如果在前端使用未预见的 GET 参数调用未缓存的页面,并且该参数已从外部源的链接附加到 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,…
...或通过站点包中的 ext_localconf.php:
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'tlbid';
我只关心非预期的参数。扭转这个概念并基本上排除除一些自定义允许参数之外的所有参数可能是有意义的,但到目前为止我不知道这是否可能。
明白了。实际上,TYPO3 已经为其他常见跟踪和附加参数处理了这些,例如
L
、utm_campaign
、fbclid
等。排除参数的完整列表可以在 源代码中找到。
要添加您自己的,只需添加/修改
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 解决了这个问题。
它在 TYPO3 V11.5.16 中对我不起作用
本地配置:
[FE][cacheHash][排除参数] = L,tx_solr,sword_list,utm_source,utm_medi…
浏览器网址:
https://www.example.org/testfaelle/test?sword_list%5B0%5D=testf%C3%A4lle&no_cache=1
HTML 前端规范是:
<link rel="canonical" href="https://www.example.org/testfaelle/test?sword_list%5B0%5D=testf%C3%A4lle&cHash=e81add4ca148ad10189b9cbfa4d57100">
调试:
如果我进入文件:“/typo3/sysext/frontend/Classes/Utility/CanonicalizationUtility.php”并直接添加参数:
$paramsToExclude[] = 'sword_list';
ist 有效:
<link rel="canonical" href="https://www.example.org/testfaelle/test">