我的TYPO3网站有多个域,这些域具有从内部新闻到另一个域中另一个页面的链接。
Domain A (with SSL in frontend)
Page 1
News (folder)
News A
News B
Domain B (with SSL in frontend)
Page 2
Page 3
News A
到第 1 页的链接工作得很好,但是当从新闻 B 链接到Page 2
或Page 3
时,URL 会正确生成,但方案始终http
:
示例News A
: <a href="/Page-1.html">Page 1</a>
示例News B
:<a href="http://domain-b/Page-2.html">Page 2</a>
有没有办法将 url 生成配置为在链接到给定域中的任何内容时始终使用 https 作为方案?我怀疑必须为tx_news中的链接渲染执行此操作?
这与新闻扩展无关,而是 TYPO3 本身中的一个错误 - 或者让我们称之为缺失的功能,因为 TYPO3 在这个地方不知道另一个域应该https
用作协议。
我解决这个问题是在输出内容之前替换内容。这可以通过在ext_localconf.php
中添加钩子来完成:
// Hook for changing output before showing it
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output'][]
= VendorExtKeyHooksFrontendContentPostProc::class . '->run';
并在文件中typo3conf/extkey/Classes/Hooks/Frontend/ContentPostProc
:
命名空间供应商\
extKey\Hooks\前端;
class ContentPostProc
{
public function run(array &$parameters) {
$searchReplace = [
'http://domain.tld' => 'https://domain.tld'
];
$parameters['pObj']->content = str_replace(array_keys($searchReplace), array_values($searchReplace), $parameters['pObj']->content);
}
}