Re: Xrea / Coreserver

2012年5月7日 at 13:46

他のサーバーではCGIモードでも普通に動いてるのでやはりCORE SERVERの問題だと思います。とにかく、契約してみます…(ばたばた

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月11日 at 21:36
header()を追加する方法ではなく、Controllerクラスのredirectメソッドを書き換えることで解決することが分かりました。

concrete/libraries/controller.php を複製、 libraries/controller.php に設置(ユーザー領域でオーバーライドすることで、コアのアップデートに対応する方法)し、下記の通りに書き換えます。

▼修正前
public function redirect() {
$args = func_get_args();
$url = call_user_func_array(array('View', 'url'), $args);
if ($url == '') {
$url = BASE_URL . DIR_REL;
}
header("Location: " . $url);
exit;
}


▼修正後
public function redirect() {
$args = func_get_args();
$url = call_user_func_array(array('View', 'url'), $args);
if (($url == '') || ($url == "/")) { // ←ココを変更
$url = BASE_URL . DIR_REL;
}
header("Location: " . $url);
exit;
}


これでインストール時、ログアウト・ログイン時の問題は解決します。
 

Re: Xrea / Coreserver

2012年5月12日 at 2:52
hissy様

いつも大変お世話になっております。nanpouです。
今回もご教示ありがとうございます。

>concrete/libraries/controller.php を複製、 libraries/controller.php に設置
>(ユーザー領域でオーバーライドすることで、コアのアップデートに対応する方法)
ここ、すごく大事ですよね。気になっておりました。ありがとうございます。

また、可能であればで結構ですので、下記ご教示いただければと思います。

1. header()を追加する方法、 || ($url == "/"))を追加する方法、
方法が全く違うのに、同じ結果になるのはなぜか?
そもそも今回のエラーの、根本的原因は何なのか? 何が悪かったのか?

2. 今回編集箇所の少し下に、「public function externalRedirect」
 という箇所があり、その中にも「header('Location: '.$url);」という記述があります。
 今回のエラーには関係無いかもしれませんが、何らかの対応をしておいた
 方が良い?のでしょうか? 今後、不具合の発生する可能性は無いのでしょうか?
 今回エラーの、根本的原因にも依ると思いますが・・・。

よろしくお願いいたします。
 

Re: Xrea / Coreserver

2012年5月12日 at 9:10
本家のフォーラムに載ってたので、ぼくもよくわかりません(^^;
要はリダイレクト先の指定がなければトップページにリダイレクトする、という処理が書かれているのですが、「リダイレクト先の指定が無い」ことを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とGmailは相性が悪い

2012年5月8日 at 0:42
何度も連続投稿、申し訳ございません。

4.「パスワードを忘れた方はこちら」の箇所で、メールアドレスを入力し「パスワードをリセット・メールで送信」ボタンを押すと、「登録されているメールアドレスに、パスワードをリセットするためのEメールを送信しました。」と表示されるのですが、メールは送られてきません。

こちらの原因が分かりました。

表題の通り、CoreServerとGmailの相性が悪いのが原因のようです。

CoreServerからGmailに送ったメールが届かない、又は逆にGmailからCoreServer上のアドレスに送ったメールが届かないことが多々発生しているようです。
(詳細情報はキーワード「gmail coreserver」等で検索すると出てきます)

今回受信側がGmailだったのですが、これをYahoo!メールに変更してみたら、
あっさり受け取れました。

これはこれで大問題なのですが、concrete5とは直接関係の無いことなので
ひとまず解決とさせていただきます。お騒がせいたしました・・・。

今回の教訓としては、CoreServerにconcrete5をインストールした時は、
・Gmailでユーザー登録してはダメ
・お問合せフォーム等の送信先にGmailを指定してはダメ
ということなのかなぁと思っています。
 

Re: Xrea / Coreserver

2012年5月8日 at 11:57
Nanpou さん

素晴らしい。いろいろ検証して下さってありがとうございます!

ただし、CORESERVER は使用するサーバーによって、管理している下請け業者が違うらしく、提示していただいた方法も契約した時期や運によってうまくいかない可能性があります。

CORESERVER / Xrea のインストールガイドは、正解がないので難しいです。

ひとまず、解決策の一つとして、書き留めておきます。

ありがとうございます!
 

Re: Xrea / Coreserver

2012年5月8日 at 12:15
Coreserver のインストールガイドに追記させて頂きました。
ありがとうございます!