私は最初にstackoverflow.comでこの質問をしました(質問 ここ )。コメントで、私がここでその質問をした方が良いだろうと読むことができます。
私のjoomlaウェブサイトではecho $this->baseurl;
を使用していますが、「/ index.php」を含むURLを返します。これを変更して、baseurlから "/index.php"を削除します。しかし、$this->baseurl;
の定義行が見つかりません。
私は this thread を見つけましたが、これは質問の所有者のテンプレートに基づいており、私のテンプレートにはこのようなものはありません。
非常に感謝の提案:)
_$this->baseurl;
_は基本的にJUri::base()
のショートカットです。 configuration.phpファイルの_live_site
_変数として指定した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バックエンド)でRL rewritingをYesに設定してみてください。これが機能しない場合は、 このページのApacheセクション の手順1、2および5を読んでください。再試行。
テンプレートのindex.phpファイルの上部に、以下を追加します
_<?php
$this->baseurl = JUri::base();
?>
_
_$this->baseurl;
_は、JURIクラスのJURI:base();
メソッドを呼び出す代わりに、テンプレート内から使用するショートカットです。これはコアの一部であり、/libraries/joomla/environment/uri.php (~line 218).
で見つけることができます
メソッドを見ると、設定ファイルで_$live_url
_変数が定義されているかどうかを確認することがわかります。はいの場合、このURLを返します。それ以外の場合は、他のいくつかのチェックを行って、実際のベースURIを返します。
live_url変数が_configuration.php
_最後に_index.php
_が含まれています。そこでチェック...
別の可能性として、現在のテンプレート/テンプレートシステムで_$this->baseurl
_プロパティがどこかで定義されている可能性があります。次のように、テンプレートの_$this->baseurl
_ファイルの上部で再度再定義することにより、テンプレート内の_index.php
_を簡単にオーバーライドできます:$this->baseurl = JURI::base();
*更新:
更新2-将来の参照用
この投稿で提供されている情報を完成させるために、JURI::base($pathonly boolean)
は1つの引数、_$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パスの最後の末尾のスラッシュは省略されることに注意してください。