typo3 uriBuilder和realurl链接

时间:2015-12-13 20:25:39

标签: typo3 extbase

我在控制器中创建指向页面的链接,如

$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/之类的链接吗?

4 个答案:

答案 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

也许这可以帮助到这里结束的人。