Answers:
$this->baseurl;
基本上是的快捷方式JUri::base()
。它获取您live_site
在configuration.php文件中指定为变量的URL 。如果没有任何价值,那么它将基于一些变量使用一些PHP魔术。
因此,让我们运行一些测试。请报告结果:
<?php
echo 'Rule 1: ' . JUri::base() . '\n';
echo 'Rule 2: ' . $_SERVER['PHP_SELF'] . '\n';
echo 'Rule 3: ' . $_SERVER['REQUEST_URI'] . '\n';
echo 'Rule 4: ' . $_SERVER['SCRIPT_NAME'] . '\n';
?>
<?php
echo JUri::base();
echo JUri::base(true);
?>
在全局配置(Joomla后端)中,尝试将URL重写设置为是。如果不工作,然后读取步骤1,2和5的的这个页面上的Apache部分,然后再试一次。
在模板的index.php文件顶部,添加以下内容
<?php
$this->baseurl = JUri::base();
?>
的$this->baseurl;
是从一个模板内部使用的快捷方式,而不是调用JURI:base();
的JURI类的方法。它是核心的一部分,您可以在以下位置找到它/libraries/joomla/environment/uri.php (~line 218).
如果您查看该方法,将会看到它检入配置文件以查看是否$live_url
定义了变量。如果是,它将返回此URL,否则将进行许多其他检查并返回您的实际基本URI。
您很可能在其中定义了live_url变量,该变量的末尾configuration.php
包含index.php
。检查那里...
另一种可能性是您当前的模板/ template系统在某处定义了$this->baseurl
属性。您可以通过$this->baseurl
在模板index.php
文件的顶部再次重新定义模板来轻松覆盖模板内部,例如:$this->baseurl = JURI::base();
*更新:
更新2-供将来参考
为了完成在这篇文章中给出的信息中,JURI::base($pathonly boolean)
需要一个参数,$pathonly
它是一个布尔数据类型 - false
是默认的。
使用$pathonly = true
,它将仅返回站点的路径。
例子:
<?php echo JURI::base(); ?> Would echo something like: http:://localhost/joomla25/
<?php echo JURI::base(true); ?> Would echo: /joomla25
请注意,当$ pathonly = true时,将忽略URI路径末尾的斜杠。
live_site
为我的URL,仅此而已(我没有在某处添加index.php)。
live_site
将configuration.php文件中的变量更改为我的网址(没有任何更改)。结果如下:规则1: my-url.com 规则2: /index.php 规则3: / 规则4: /index.php