簡體   English   中英

typo3 uriBuilder和realurl鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM