Admin にログインすると $bcBaser-link() で生成されるURLがおかしい

2013年にさくらインターネットのサーバ上に設置して、当初は問題なく動いていたのですが、先日(実は昨年の7月!)そのお客様から admin でログインするとエラーになるとの連絡が入り、
調べたところ、
なぜか、管理画面の「固定ページ管理」「ウィジェット管理」… などのURLリンクがおかしな状況になっています。
(誤)
hoge.co.jp/admin/dashboard/1admin/pages/index

正しくは、
hoge.co.jp/admin/pages/index

こうなるべきで、ブラウザに期待するURLを直接入れるとちゃんとそのページが表示されます。
色々調べてk $bcBaser->link() でURLを生成しているのは分かったのですが、
なぜ不要な、/admin/dashboard/1 が挟まるのかまでは分かりませんでした。

ちなみに、ブラウザに直接URLをいれて、固定ページ一覧を表示した場合、
メニューのURLは、
hoge.co.jp/admin/pages/1admin/pages/index
このようになり、やはり不要な
/admin/pages/1
が入っています。

不可解なのは、それまで動いていたのになぜ動かなくなったか?
お客様の話では、さくらのレンタルサーバーで一度php7に切り替えて、
また、php5に戻したとか、それが原因とも思えませんが。

ちなみに、管理画面以外の表(?)のページはちゃんと動いております。

同じような現象のかたいらっしゃいませんでしょうか?

↓すみません、古いバージョンです。

■ BaserCMSのバージョン:2.0.5.1
■ レンタルサーバー名:さくらインターネット
■ スマートURLの利用:ON
■ 設置フォルダ: [ドキュメントルート]
■ 利用しているデータベース: [SQLiteL]
■ PHPスキル(自己評価): [ B or C ]

@ymatsu8801 こんにちは。

hoge.co.jp/admin/pages/1admin/pages/index

このようなURLとのことですが、
hoge.co.jp/admin/pages/1 ここまでが現在のURLで、 admin/pages/index これがリンクのURLになるのかなと思います。

実際に出力されているタグについて

<a href="/admin/pages/index">

となっているべきですが、あたまのスラッシュが抜けて

<a href="admin/pages/index">

となってしまっているではないかと想像します。

このスラッシュが抜けた原因について、もしかしたら、サーバーの環境の変更によって、PHPより参照できる環境変数が変わってしまった可能性があります。

そもそも、2系は脆弱性をかかえており、もうメンテナンスされないので、パートナーに依頼するなどして、4系にアップデートすることが望ましいです。

ただ、どうしてもこのまま運営する必要があるのという事でしたら、試しに app/Config/core.php の次の行を変更してみてください。

Configure::write('App.baseUrl', $_SERVER['SCRIPT_NAME']);
↓
Configure::write('App.baseUrl', '/');
1 Like

@ryuring
早速のお返事ありがとうございます。
タグは

<a href="/admin/dashboard/1admin/pages/index">

このようになっていました。

Configure::write('App.baseUrl', '/');

こちらも変更して、念のためキャッシュ類もクリアしてやってみましたが、
変わらずでした。
残念です。

@ymatsu8801 むむむ、こうなると、環境の問題に依存している可能性が高い以上、FTP等の情報を頂いて実際の環境をみないとアドバイスのしようがなさそうです…
有償となる可能性が高いです、クリエイティブパートナー会社に相談してみてはいかがでしょう?