我在控制器中创建指向页面的链接,如
$uriPage = $this->uriBuilder->reset()->setTargetPageUid(intval($row['page']))->setCreateAbsoluteUri(TRUE)->build();
得到http://mydomain.tld/index.php?id=70但我使用的是realurl并且需要realurl链接。 我可以通过控制器中的uriBuilder创建http://mydomain.tld/mypage/之类的链接吗?
答案 0 :(得分:1)
我在TYPO3 7.6.2中遇到了同样的问题 配置正常,因为正常导航是通过realurl呈现的。我从uriBuilder获得的URI的格式是没有实际的。
更新:当我使用setCreateAbsoluteUri(true)时出现问题。 解决方案:之后将网址设为绝对。
// ...
$this->uriBuilder->setCreateAbsoluteUri(false);
$link = $this->uriBuilder->build();
$uri = \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl($link);
答案 1 :(得分:1)
如果项目未在服务器根目录内运行但在某些子目录中运行,并且未设置TypoScript设置config.absRefPrefix
,则会出现此问题。
原因是,底层的typolink核心方法检查当前的主机域,例如带有请求路径的 www.example.de ,例如的 www.example.de/somesubdirectory 即可。
因为如果从上面缺少设置它们是不同的,逻辑决定我们正在构建跨域请求URI,并且正在跳过任何URL美化器,如RealUrl等。我想有人可能会认为这是一个错误。
因此,一个解决方案可能是设置config.absRefPrefix
。
如上所述,如果直接在服务器根目录内运行,则不会出现此问题。
答案 2 :(得分:0)
您编写的用于生成链接的脚本是正确的,但您需要检查realurl的配置(脚本将自动生成那种URL)
可以在TS
config.tx_realurl_enable = 1
OR
它可以在.htaccess方
OR
您需要检查可能阻止生成URL重写的Apache设置。
答案 3 :(得分:0)
我参加这个聚会有点晚了,但是无论如何:
如果遇到此问题,可能要检查您的打字稿。 在那里,您需要添加
config.simulateStaticDocuments = 0
然后realurl应该正确呈现链接。如果将其设置为1,则最终会得到index.php?id=xxx
也许这可以帮助到这里结束的人。