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