以前に書きかけてやめた内容です。その変更が間違っているかもしれないからです。Joomla!のHackでなくサーバーの設定やhtaccessでの回避が可能とも思えるのですが、探しても適切な内容には行き当たりませんでした。(そのあたりはあまり詳しくはありません。)事実、CORESERVERでは下記のHackは適用していなかったので環境によるものだと思います。
80codeサーバーでJoomla!1.5のSEFをオンにすると(独自ドメインを使っている環境下のテストしかしていません。)、メニューの一階層目は正しく表示されますが、2階層目以降は本来のURLに付加された疑似フォルダ(変)がトップレベルの階層になってしまい、404エラーとなってしまいます。それにはじめて出くわしたときはいろいろ検索したのですが、なかなか適当な記事を発見できず、安易にHackという方法をとっています。
変更は、以下の通り。
Root/libraries/joomla/environment/uri.php
return $pathonly === false ? $base['prefix'].$base['path'].'/' : $base['path'];
を以下のように変更することで通常のように表示できています。
if(JPATH_BASE == JPATH_ADMINISTRATOR) {
return $pathonly === false ? '/administrator/' : '/administrator';
}
return $pathonly === false ? '/' : '';
// return $pathonly === false ? $base['prefix'].$base['path'].'/' : $base['path'];
236行目は、変更前のものをコメントアウトしているだけです。すぐに戻せるように残しています。
また、htaccessの「RewriteBase /」部分を有効にしてください。
うちのデモサイトhttp://demo.joomler.net/ではこの変更を適用しています。今のところ何も問題ありません。ただ、サードパーティーのエクステンションは私の作成したものだけで他のエクステンションでは悪影響があるかもしれないのでご注意ください。
また、他の回避方法(サーバー設定など)をご存じの方は是非教えて下さい。