質問 > フロント機能 > SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
seasoft |
投稿日時: 2011/11/18 0:28
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 備忘録的な意味も含めて、チケットを発行しておきました。
http://svn.ec-cube.net/open_trac/ticket/1559
|
istn |
投稿日時: 2011/11/17 21:34
対応状況: 解決済
|
常連 登録日: 2011/11/10 居住地: 投稿: 31 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 いえいえ、こちらこそ大変助かりました。ありがとうございます。
・(商品マスタやテンプレートなど) データを更新した時に、正しく再読み込みしなくなる懸念 ・クロール頻度が必要以上に高まりサーバの処理遅延発生、更新日として認識してもらえなくなる など こちらに関しましては、今後なんらかの問題が起きないか注意をしていきたいと思います。 今回の件で数日間ずっとこちらの作業に追われておりましたので大変助かりました。有難う御座いました! |
seasoft |
投稿日時: 2011/11/17 21:25
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 日中の返答を出来ず申し訳ございません。
とりあえずは、解決できたようで何よりです。 実際問題としましては、個人的にはどう対処すべきか明確な答えを持ち合わせていないというのが正直なところです。 多分、EC-CUBE の Last-Modified: はおまじない程度で、深い意味はないものだとは思うのですが、様々な環境の中には、そういったおまじないが効果的なケースもあり、手をつけにくいといったところです。 istn 様の変更内容で、想定される不具合としては、下記の現象を思いつきます。 ・(商品マスタやテンプレートなど) データを更新した時に、正しく再読み込みしなくなる懸念 多分、発生するとしても、少数環境だと思います。もしも、そういった不具合がありましたら、ご報告いただけると幸いです。 あとは、実際のコンテンツが更新されていないのに、Last-Modified ばかりが更新されると、(スパム扱いとまではいかなくとも) 何らかの意図せぬ作用(*)が生じぬものかと若干不安に思う部分もございます。 (*) 例: クロール頻度が必要以上に高まりサーバの処理遅延発生、更新日として認識してもらえなくなる など
|
istn |
投稿日時: 2011/11/17 21:13
対応状況: 解決済
|
常連 登録日: 2011/11/10 居住地: 投稿: 31 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 header('Last-Modified:');
を削除するのではなく、 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); と変更しましたら削除することなく治す事が出来ました! HTTPヘッダの情報を参照したところ、header('Last-Modified:');を削除してしまうとHTTPヘッダからもLast-Modifiedが削除されてしまいましたが、 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); と変更したら、HTTPヘッダの情報にもLast-Modifiedが記載されておりました。 たぶん、これで大丈夫…かと思います! ありがとうございました! |
istn |
投稿日時: 2011/11/17 15:47
対応状況: −−−
|
常連 登録日: 2011/11/10 居住地: 投稿: 31 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 seasoft様のご返答を得て自分で色々してみたところ、data/class/pages/LC_Page.phpの294行目・301行目の
header('Last-Modified:'); を削除してみたところ、ページの最終更新日時が正常に表示されました。(login.php,heade_login.phpを削除せずに) 買い物かご・ログインのキャッシュも正常に動作しているのでこのままで大丈夫なのかなとは思うのですが、SEO対策的にheaderのLast-Modifiedを消すのはどうかな…と思っています。 この方法で大丈夫なのか、もしくはこの事によりにクロールされたキャッシュが永遠と残るのではないかという心配もあります。 一応、問題はseasoft様の的確なご協力により解決致しましたが…headerのLast-Modifiedを削除してしまっても大丈夫でしたでしょうか? |
istn |
投稿日時: 2011/11/17 2:19
対応状況: −−−
|
常連 登録日: 2011/11/10 居住地: 投稿: 31 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 LC_Pageのどれを見たらいいのかわかりませんが…とりあえず片っ端から見てみたのですが、どう手を加えたらよろしいのか全くわからず教えて頂いたページ等と長時間睨めっこしてみましたが全く解決致しませんでした。
どれを見てみたらいいのか私には全く分かりませんでしたので、それらしきLC_Page_FrontParts_Bloc_Login.phpを開いてみたところ下記の通りでした。 すると、確かにHttpCacheControlなるものとsendResponseが存在しているのですがどうしたよいのか…という感じです。 // {{{ requires require_once CLASS_REALDIR . 'pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php'; /** * ログイン のページクラス. * * @package Page * @author LOCKON CO.,LTD. * @version $Id:LC_Page_FrontParts_Bloc_Login.php 15532 2007-08-31 14:39:46Z nanasess $ */ class LC_Page_FrontParts_Bloc_Login extends LC_Page_FrontParts_Bloc { // }}} // {{{ functions /** * Page を初期化する. * * @return void */ function init() { parent::init(); $this->tpl_login = false; $this->tpl_disable_logout = false; $this->httpCacheControl('nocache'); } /** * Page のプロセス. * * @return void */ function process() { $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { $objCustomer = new SC_Customer_Ex(); // クッキー管理クラス $objCookie = new SC_Cookie_Ex(COOKIE_EXPIRE); // ログイン判定 if($objCustomer->isLoginSuccess()) { $this->tpl_login = true; $this->tpl_user_point = $objCustomer->getValue('point'); $this->tpl_name1 = $objCustomer->getValue('name01'); $this->tpl_name2 = $objCustomer->getValue('name02'); } else { // クッキー判定 $this->tpl_login_email = $objCookie->getCookie('login_email'); if($this->tpl_login_email != '') { $this->tpl_login_memory = '1'; } // POSTされてきたIDがある場合は優先する。 if( isset($_POST['login_email']) && $_POST['login_email'] != '') { $this->tpl_login_email = $_POST['login_email']; } } $this->tpl_disable_logout = $this->lfCheckDisableLogout(); //スマートフォン版ログアウト処理で不正なページ移動エラーを防ぐ為、トークンをセット $this->transactionid = SC_Helper_Session_Ex::getToken(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } /** * lfCheckDisableLogout. * * @return boolean */ function lfCheckDisableLogout() { $masterData = new SC_DB_MasterData_Ex(); $arrDisableLogout = $masterData->getMasterData('mtb_disable_logout'); $current_page = $_SERVER['PHP_SELF']; foreach($arrDisableLogout as $val) { if($current_page == $val) { return true; } } return false; } } |
seasoft |
投稿日時: 2011/11/17 0:07
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 > frontparts/bloc/login.php
> frontparts/bloc/login_header.php > > を消去した場合のみ、正常にlastModifiedでの日付が取得出来ることがわかりました…。 よく、そこにたどり着きましたね。istn 様の分析能力に感服です。 分かりました。 多分、LC_Page#httpCacheControl です。 しかし、ログインブロックとなると、範囲が広くて、困りましたね・・・
|
seasoft |
投稿日時: 2011/11/17 0:02
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 > ヘッダーのphpを変更したらいいのか、ヘッダーのtplに何か追記をしたらいいのかまったく分からず、お分かりになるのでしたらご教授願いたいです…。
サイト全体だとしたら、LC_Page#sendResponse の末尾とかかな。 > 尚、もちろん当たり前のことかもしれませんが…test.htmlというファイルを作ってそちらの最終更新日時を確かめたところ、正常な日時が表示されます。 うん。当たり前ですね。(笑) ですが、サーバが腐っていないようで、安心ですね。 そうなると、PHP か EC-CUBE の処理という事になりますが・・・
|
istn |
投稿日時: 2011/11/16 23:29
対応状況: −−−
|
常連 登録日: 2011/11/10 居住地: 投稿: 31 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 frontparts/bloc/login.php
frontparts/bloc/login_header.php を消去した場合のみ、正常にlastModifiedでの日付が取得出来ることがわかりました…。 ログインに関する何かが原因だとは思うのですが、原因が未だわかっておりません。 login.phpとlogin_header.phpが原因?だと言うことがわかったことは今回の問題の解決になる糸口かはわかりませんが…。 |
istn |
投稿日時: 2011/11/16 18:03
対応状況: −−−
|
常連 登録日: 2011/11/10 居住地: 投稿: 31 |
Re: SEO対策にて、ページ更新日時が1970年1月1日と表示されてしまう。 たぶん、そのあたりかと思いますが…
どこをどう手を加えて行ったらいいのかまったくわからず困っております。 ヘッダーのphpを変更したらいいのか、ヘッダーのtplに何か追記をしたらいいのかまったく分からず、お分かりになるのでしたらご教授願いたいです…。 色々とご面倒をおかけし申し訳御座いません。 尚、もちろん当たり前のことかもしれませんが…test.htmlというファイルを作ってそちらの最終更新日時を確かめたところ、正常な日時が表示されます。 phpのどこになんの記載をしたらいいのか分からず手を焼いております…。 |
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |