hissy様
いつも大変お世話になっております。nanpouです。
今回もご教示ありがとうございます。
>concrete/libraries/controller.php を複製、 libraries/controller.php に設置
>(ユーザー領域でオーバーライドすることで、コアのアップデートに対応する方法)
ここ、すごく大事ですよね。気になっておりました。ありがとうございます。
また、可能であればで結構ですので、下記ご教示いただければと思います。
1. header()を追加する方法、 || ($url == "/"))を追加する方法、
方法が全く違うのに、同じ結果になるのはなぜか?
そもそも今回のエラーの、根本的原因は何なのか? 何が悪かったのか?
2. 今回編集箇所の少し下に、「public function externalRedirect」
という箇所があり、その中にも「header('Location: '.$url);」という記述があります。
今回のエラーには関係無いかもしれませんが、何らかの対応をしておいた
方が良い?のでしょうか? 今後、不具合の発生する可能性は無いのでしょうか?
今回エラーの、根本的原因にも依ると思いますが・・・。
よろしくお願いいたします。
Re: CoreServerで「5.5.2.1.ja」が動作不良
2012年5月7日 at 20:56
連続投稿、失礼いたします。
いくつかの問題を解決できましたので、ご報告いたします。
1.「トップページ」に戻ったところ、なぜか突然インストールが開始
2.ログアウトはできるがエラー表示
3.トップページに戻ると、なぜかログインに成功
これらを解決することができました。
【対策方法】
/concrete/libraries/controller.phpを編集。
356行あたり。
header("Location: " . $url); の前に
header('Status: 301 Moved Permanently'); を挿入。
ついでに、370行あたり
header('Location: '.$url); の前にも同じ
header('Status: 301 Moved Permanently'); を挿入。
これで正常に動作いたしました。
関西ユーザーグループ勉強会で、以前話題になっていた
「ログインしても、メニューバーが表示されない。ブラウザの再読込ボタンを押すと表示される」という問題も、この方法で解決いたしました。
(フォーラムでも、
http://concrete5-japan.org/community/forums/beginner/post-3604/
「ログインしても「編集モード」などのバーが表示されず、もう1度ログインしないと編集画面に入れない。」と、同じ問題が指摘されていました)
この解決策で問題無いか、ご検証いただければと思います。
よろしくお願いいたします。
Re: Xrea / Coreserver
2012年5月12日 at 9:10
本家のフォーラムに載ってたので、ぼくもよくわかりません(^^;
要はリダイレクト先の指定がなければトップページにリダイレクトする、という処理が書かれているのですが、「リダイレクト先の指定が無い」ことをURLが空であることで判断しています。サーバーの仕様によってここがちがうんでしょうね…。
301リダイレクトだと「恒久的な移動」になってしまうので、不都合が発生することが考えられます(Googleのbotが301を見つけると、リダイレクト前のページはインデックスされなくなるなど)。
ソースを見る限りexternalRedirectメソッドには関係ないと思います。
要はリダイレクト先の指定がなければトップページにリダイレクトする、という処理が書かれているのですが、「リダイレクト先の指定が無い」ことをURLが空であることで判断しています。サーバーの仕様によってここがちがうんでしょうね…。
301リダイレクトだと「恒久的な移動」になってしまうので、不都合が発生することが考えられます(Googleのbotが301を見つけると、リダイレクト前のページはインデックスされなくなるなど)。
ソースを見る限りexternalRedirectメソッドには関係ないと思います。
Re: Xrea / Coreserver
2012年5月12日 at 14:53
早速のご回答ありがとうございます。
また、費用も掛かるのにCoreServerでの実地のご検証、恐縮しております。
いつまでも同じ問題で引きずってしまい申し訳ありませんが、2点ほどご連絡いたします。
まず1つ目、重要度の低い話・・・。
> 301リダイレクトだと「恒久的な移動」になってしまうので、不都合が発生することが考えられます
まことに仰る通りで、こちらでも事前にその点を検討いたしました。
301リダイレクトは、”Permanent Redirect”で「恒久的な転送」
(コンテンツもURLも転送先の新しい方を表示)
302リダイレクトは、”Temporary Redirect”で「一時的な転送」
(新しいコンテンツをインデックスしつつも、URLは昔の古いURLを残す)
一時的に生成されるリダイレクト用ページ?から、コンテンツページへの
移動なので、301の方が良いのでは?と判断いたしました。
それでもやはり302の方が・・・ということであれば、
header('Status: 301 Moved Permanently'); を、
header('Status: 302 Moved Temporarily'); に変更すれば良いと思います。
またどちらにしても転送元は「一時的に生成されるリダイレクト用ページ?」
に過ぎないので、301でも302でも大差無いと判断いたしました。
次に2点目。今回問題になっているRedirect機能は、先だって挙げさせて
いただいた「インストール・ログイン・ログアウト」の他に、
「ログイン後スタートページ」機能でも利用されているようです。
(以下、素人の意見なので鵜呑みにせず、再検証いただきたいのですが)
どうもhissy様にご教示いただいた方法では、「ログイン後スタートページ」機能で
リダイレクト先を「ホームページ」以外に設定した場合、正常に動作しないようです。
試しにリダイレクト先を「カスタムページ」のブログに設定してみたのですが、
メニューバーが表示されませんでした。
修正内容から考えても、上記の挙動は不思議では無い気がいたします。
誠に恐縮ではございますが、上記ご検証いただければ幸いです。
よろしくお願いいたします。
また、費用も掛かるのにCoreServerでの実地のご検証、恐縮しております。
いつまでも同じ問題で引きずってしまい申し訳ありませんが、2点ほどご連絡いたします。
まず1つ目、重要度の低い話・・・。
> 301リダイレクトだと「恒久的な移動」になってしまうので、不都合が発生することが考えられます
まことに仰る通りで、こちらでも事前にその点を検討いたしました。
301リダイレクトは、”Permanent Redirect”で「恒久的な転送」
(コンテンツもURLも転送先の新しい方を表示)
302リダイレクトは、”Temporary Redirect”で「一時的な転送」
(新しいコンテンツをインデックスしつつも、URLは昔の古いURLを残す)
一時的に生成されるリダイレクト用ページ?から、コンテンツページへの
移動なので、301の方が良いのでは?と判断いたしました。
それでもやはり302の方が・・・ということであれば、
header('Status: 301 Moved Permanently'); を、
header('Status: 302 Moved Temporarily'); に変更すれば良いと思います。
またどちらにしても転送元は「一時的に生成されるリダイレクト用ページ?」
に過ぎないので、301でも302でも大差無いと判断いたしました。
次に2点目。今回問題になっているRedirect機能は、先だって挙げさせて
いただいた「インストール・ログイン・ログアウト」の他に、
「ログイン後スタートページ」機能でも利用されているようです。
(以下、素人の意見なので鵜呑みにせず、再検証いただきたいのですが)
どうもhissy様にご教示いただいた方法では、「ログイン後スタートページ」機能で
リダイレクト先を「ホームページ」以外に設定した場合、正常に動作しないようです。
試しにリダイレクト先を「カスタムページ」のブログに設定してみたのですが、
メニューバーが表示されませんでした。
修正内容から考えても、上記の挙動は不思議では無い気がいたします。
誠に恐縮ではございますが、上記ご検証いただければ幸いです。
よろしくお願いいたします。
Your post has been saved and will be published after approval by the forum moderator.
takuro hishikawa
Re: Xrea / Coreserver
concrete/libraries/controller.php を複製、 libraries/controller.php に設置(ユーザー領域でオーバーライドすることで、コアのアップデートに対応する方法)し、下記の通りに書き換えます。
▼修正前
▼修正後
これでインストール時、ログアウト・ログイン時の問題は解決します。