【问题标题】:TYPO3 force internal links to cross domain pages to use https in newsTYPO3 强制内部链接跨域页面在新闻中使用 https
【发布时间】:2018-04-10 08:55:52
【问题描述】:

我的 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 2Page 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 中的链接渲染完成?

【问题讨论】:

    标签: https typo3 typoscript tx-news typolink


    【解决方案1】:

    这与新闻扩展无关,而是 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'][]
      = \Vendor\ExtKey\Hooks\Frontend\ContentPostProc::class . '->run';
    

    在文件typo3conf/extkey/Classes/Hooks/Frontend/ContentPostProc:

    命名空间供应商\ExtKey\Hooks\Frontend;

    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);
        }
    }
    

    【讨论】:

    • 这听起来很合理,我会检查整体性能(但最后一切都是静态缓存的,所以这应该不是问题)。困扰我的是,可以在typolink上设置方案,因此我认为可以全局配置它,但正如你所说,这可能只是一个缺失的功能:-)
    猜你喜欢
    • 2016-02-08
    • 2019-11-19
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多