[英]How to get correct URL in Joomla from external code?
我正在從一些外部代碼訪問Joomla框架, 如此答案所示 。 該網站位於http://localhost/joomla/
,外部代碼位於http://localhost/joomla/external/index.php
我已經將JPATH_BASE
正確設置為Joomla根目錄,並生成如下所示的URL:
JRoute::_('index.php?option=com_users&view=login')
但這返回的是URL /joomla/external/index.php/login
而不是應為的樣子: /joomla/index.php/login
如何解決這個問題?
編輯:為了清楚起見,我正在尋找任何文件夾結構的通用解決方案。 外部文件夾可能位於其他位置,例如http://localhost/external/
最終找到了解決方案-我需要在configuration.php
文件中設置站點的基本URL:
public $live_site = 'http://localhost/joomla/';
現在,無論外部代碼來自何處,調用JRoute::_
返回正確的路徑。
您可以做的是,修剪基本URL末尾的結尾字符串,然后在JRoute
使用它,如下所示:
$base = rtrim(JUri::base(), JUri::base(true));
JRoute::_($base . '/index.php?option=com_users&view=login');
$base = JUri::base();
$baseTrue = JUri::base(true);
$baseRoot = rtrim($base, $baseTrue);
var_dump($base);
var_dump($baseTrue);
var_dump($baseRoot);
var_dump(JRoute::_($baseRoot . '/index.php?option=com_users&view=login'));
輸出:
> 'http://example.loc/media/' (length=24)
> '/media' (length=6)
> 'http://example.loc' (length=17)
> 'http://example.loc/index.php?option=com_users&view=login' (length=55)
注意: /media
只是我在其中放置獨立PHP文件的目錄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.