[英]typo3 uriBuilder and realurl link
我在控制器中创建到页面的链接
$uriPage = $this->uriBuilder->reset()->setTargetPageUid(intval($row['page']))->setCreateAbsoluteUri(TRUE)->build();
并获取http://mydomain.tld/index.php?id = 70,但我使用的是realurl,需要realurl链接。 我可以通过Controller中的uriBuilder进行诸如http://mydomain.tld/mypage/的链接吗?
我在TYPO3 7.6.2中遇到了同样的问题,配置正常,因为正常的导航使用realurl呈现。 只是我从uriBuilder获得的URI的格式没有realurl。
更新:当我使用setCreateAbsoluteUri(true)时出现问题。 解决方案:之后将URL设为绝对。
// ...
$this->uriBuilder->setCreateAbsoluteUri(false);
$link = $this->uriBuilder->build();
$uri = \TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl($link);
当项目不在服务器根目录中而是在某些子目录中运行时,并且没有设置TypoScript设置config.absRefPrefix
就会出现此问题。 其原因是,底层typolink核心方法检查与所请求的路径例如www.example.de/somesubdirectory当前主机域例如www.example.de。 因为在上面缺少设置的情况下它们是不同的,所以逻辑决定我们正在构建一个跨域请求URI,并且将跳过诸如RealUrl等任何URL美化器。 我猜可能有人认为它是一个错误。
因此,一种解决方案可能是设置config.absRefPrefix
。
就像我上面说的,如果直接在服务器根目录下运行,则不会出现此问题。
您编写的用于生成链接的脚本是正确的,但是您需要检查realurl的配置(脚本会自动生成该类型的URL)
可以在TS中
config.tx_realurl_enable = 1
要么
它可以在.htaccess端
要么
您需要检查可能会阻止生成URL重写的apache设置。
我参加这个聚会有点晚了,但是无论如何:
如果您遇到此问题,则可能要检查您的打字稿。 在那里,您需要添加
config.simulateStaticDocuments = 0
然后,realurl应该正确呈现链接。 如果将其设置为1,则最终将拥有index.php?id=xxx
也许这会帮助到这里的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.