バージョン選択

フォーラム

メニュー

オンライン状況

53 人のユーザが現在オンラインです。 (43 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 53
もっと...

サイト内検索

質問 > その他 > Googleサイトマップ登録に関して

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Linux-user
投稿日時: 2009/4/21 13:12
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Googleサイトマップ登録に関して
[EC-CUBE] 2.3.4(手動アップデート済)
[レンタルサーバ] クララオンライン
[OS] Red Hat Enterprise Linux 5
[PHP] PHP 5.1.6
[データベース] PostgreSQL 8.3.4
[WEBサーバ] Apache(ver 2.2.3 )

[現象]Googleウェブマスター ツールより「sitemap.php」を登録して
3週間程経過しているのですが、どうもモバイル用リンクがうまく登録されていないようなのです。
(HTTP エラー:302)

追記: 「/data/class/pages/LC_Page_Sitemap.php」は変更済みです。  ↓↓引用:
$page = array("url" => SITE_URL . sprintf("%sproducts/list%d.html", $mobile, $result[$i]['category_id']));

$page = array("url" => SITE_URL. sprintf("%sproducts/detail%d.html", $mobile, $result[$i]['product_id'])



mod_rewriteによる静的URL生成済で、
--------------------------------------------------------------------------------
PC版   http://ドメイン名/products/detail22502.html
MOBILE版 http://ドメイン名/mobile/products/detail22502.html
--------------------------------------------------------------------------------
上記URLでアクセスできる状態にしています。

※MOBILE版も、「.htaccess」で以下のソースを置いているのですが、
「/html/mobile/products」直下に設置  ↓↓引用:
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^detail([0-9]+)\.html+ detail.php?product_id=$1 [L]
RewriteRule ^list([0-9]+)\.html+ list.php?category_id=$1 [L]。

「/html/mobile/」内部のソースは静的URL用には書き換えていません。
※一度書き換えたことがあるのですが、それぞれの親カテゴリの下の子カテゴリが表示されず、
すべて親カテゴリ直下に商品が表示されてしまう為、取りやめています。

ですので、
http://ドメイン名/mobile/products/detail22502.html
とアクセスしても

http://ドメイン名/mobile/products/detail.php?product_id=22502&PHPSESSID=・・・
とリダイレクトされてしまうのが原因かなと考えていましたが、
「i-mode HTML Simulator II」で確認すると、

http://ドメイン名/mobile/products/detail.php?product_id=22502
からアクセスしても302を返しています。
(もしかしたらPHPSESSID=・・・が勝手につくのが原因!?)



Googleウェブマスター ツールのエラー文  ↓↓引用:
クロールが完了できなかった URL
サイトマップの URL のサンプルをテストしたところ、一部の URL が別のページに
リダイレクトされることがわかりました。
サイトマップには、他の URL にリダイレクトされる URL ではなく、
最終的なリンク先 (リダイレクト先) の URL を指定するようお勧めします。


HTTP エラー:302 (一時的に移動しています) ヘルプ
URL:http://ドメイン名/mobile/products/detail22502.html
URL:http://ドメイン名/mobile/products/detail5255.html
URL:http://ドメイン名/mobile/products/detail5444.html
エラー検出日 2009/04/19


同じ疑問なのですが、EC CUBEで自動生成される「sitemap」にて、
モバイル用に生成されるサイトマップに関しては、
現在のGoogle モバイルサイトマップ送信基準を満たしていないのですが、これも原因になりますでしょうか。

モバイル サイトマップの作成 - ウェブマスター/サイト所有者 ヘルプ
http://www.google.com/support/webmasters/bin/answer.py?answer=34648&hl=ja

現在のGoogle モバイルサイトマップ送信基準  ↓↓引用:
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">
<url>
<loc>http://mobile.example.com/article100.html</loc>
<mobile:mobile/>
</url>
</urlset>
※<mobile:mobile/>タグ等が必要。
※自動生成される「sitemap」には、その記述がありません。

できましたら、PC版とMOBILE版で複合した「sitemap.php」ではなく、
それぞれ独立した「sitemap.php (sitemap-mobile.php とか) 」を利用したく考えております。


302リダイレクトを阻止する方法、並びに「sitemap.php」の分離は可能でしょうか。
お手数では御座いますが、ご教授の程、宜しくお願い致します。
loopus
投稿日時: 2009/4/22 12:50
対応状況: −−−
半人前
登録日: 2007/11/27
居住地: 静岡県浜松市
投稿: 11
Re: Googleサイトマップ登録に関して
Status 302ということは、とにかくどこかのページへリダイレクトが掛かっています。
まずはどこにリダイレクトしているのかを調べる必要があるでしょう。
アクセス時のHTTPヘッダを見てみた方が良いと思いますよ。

http://www.cman.jp/network/support/http.html


302が返っているうちはGoogle側で絶対にページを認識しませんから、まずはそこを解決するべきだと思います。


モバイルサイトマップ送信基準に合わせるとかはその後直せばいいんじゃないかと。
Linux-user
投稿日時: 2009/4/22 14:36
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: Googleサイトマップ登録に関して
loopus様

ご回答ありがとうございます。

お知らせ頂きましたページより、ページ表示テストを実行致しますと、
「/mobile」以下のページが全てHTTPリクエストエラーになります。

※「i-mode HTML Simulator II」におきましても Status code は確認できております。
詳細は以下の通りです。  ↓↓引用:
============================================================
URL: http://ドメイン名/mobile/
シミュレートモード : iHTML7.2/Flash Lite 3.1/Adobe Reader LE2.0/Deco-mail4.0/ToruCa2.1
通信ログ出力モード: シンプルモード
------------------------------------------------------------
URL: http://ドメイン名/mobile/
Status code: 302
Content-Type: text/html; charset=UTF-8
Content-Length: 0
--- --- ---
URL: http://ドメイン名/mobile/index.php?PHPSESSID=・・・
Status code: 200
Content-Type: text/html; charset=Shift_JIS
Content-Length: -
--- --- ---



それは、私どものページに限った事ではなく、
EC CUBEで作成された他社様のページでも同様の結果となりました。
--------------------------------------------------------------------------------
「http://ドメイン名/mobile/」
指定されたURL(表示ページ)が正しくありません
--------------------------------------------------------------------------------

EC-CUBE-EC-CUBEを使用したサイト
http://www.ec-cube.net/product/cases/backnumber.php

上記より無作為にモバイルサイトを確認し、ページ表示テストを実行致しますと、
同様に、「/mobile」以下のページが全てHTTPリクエストエラー(Status code: 302)になります。

PHPSESSIDが自動付与されますので、
その処理で必然的に「Status code: 302」を返しているようです。

ですので、そもそもモバイル版sitemapは対応できていない(対応できない)ような気がするのですが、
その辺りはどうなのでしょうか。


--------------------------------------------------------------------------------
ひとまずは、
「/data/class/pages/LC_Page_Sitemap.php」よりmobile箇所を修正し、
PCサイトのみのsitemapが表示できるように変更しました。
※これは正常に機能しています。
--------------------------------------------------------------------------------
Oba
投稿日時: 2009/4/24 22:43
対応状況: −−−
一人前
登録日: 2007/8/31
居住地: 静岡
投稿: 111
Re: Googleサイトマップ登録に関して
Linux-user 様

私もGoogleから「リダイレクト〜」と、sitemap.phpを指定し、警告を受けてました。
そこで、以前は、新たにsitemap.xmlを作り対応していました。
今は、sitemap.phpを改編して、PCとMobileを分けて登録しています。
警告はもらってませんので、多分(^^;大丈夫だと思います。

Linux-user様は、引用:
ひとまずは、 「/data/class/pages/LC_Page_Sitemap.php」よりmobile箇所を修正し、 PCサイトのみのsitemapが表示できるように変更しました。 ※これは正常に機能しています。
と、対応されてますが、どのように対応されたのか、ご教示ください。


Linux-user
投稿日時: 2009/4/27 12:00
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: Googleサイトマップ登録に関して
Oba 様
ご返信ありがとうございます。

私どもの環境では、依然、Mobileで302リダイレクトに悩まれております。
※現状では、sitemapからMobileをカットして、ひとまずPC版のみに対応させております。

また、PCサイトのみの分離・対応方法ですが、
「/data/class/pages/LC_Page_Sitemap.php」より  ↓↓引用:
// 商品一覧ページを処理
$products = $this->getAllProducts();
foreach($products as $product) {
$this->createSitemap($product['url'], '', 'daily');
}
$mobileProducts = $this->getAllProducts(true);
foreach($mobileProducts as $mobileProduct) {
$this->createSitemap($mobileProduct['url'], '', 'daily');
}


// 商品詳細ページを処理
$details = $this->getAllDetail();
foreach($details as $detail) {
$this->createSitemap($detail['url'],
$this->date2W3CDatetime($detail['update_date']));
}
$mobileDetails = $this->getAllDetail(true);
foreach($mobileDetails as $mobileDetail) {
$this->createSitemap($mobileDetail['url'],
$this->date2W3CDatetime($mobileDetail['update_date']));
}



  〜 省略 〜


/**
* すべての商品一覧ページを取得する.
*
* @param boolean $isMobile モバイルページを取得する場合 true
* @return array 検索エンジンからアクセス可能な商品一覧ページの情報
*/
function getAllProducts($isMobile = false) {
$conn = new SC_DBConn();
$sql = "SELECT category_id FROM dtb_category WHERE del_flg = 0";
$result = $conn->getAll($sql);

$mobile = "";
if ($isMobile) {
$mobile = "mobile/";
}



  〜 省略 〜


/**
* すべての商品詳細ページを取得する.
*
* @param boolean $isMobile モバイルページを取得する場合 true
* @return array 検索エンジンからアクセス可能な商品詳細ページの情報
*/
function getAllDetail($isMobile = false) {
$conn = new SC_DBConn();
$sql = "SELECT product_id, update_date FROM dtb_products WHERE del_flg = 0 AND status = 1";
$result = $conn->getAll($sql);

$mobile = "";
if ($isMobile) {
$mobile = "mobile/";
}
赤文字を削除

上記方法で調整しております。


Oba 様は、 引用:
今は、sitemap.phpを改編して、PCとMobileを分けて登録しています。
警告はもらってませんので、多分(^^;大丈夫だと思います。

と、対応されておりますが、実際にはどのように分離し、302リダイレクトを回避なされたのでしょうか。
※分離しただけでは、Mobileでの302リダイレクトは解決しない気がするのですが・・

ご教授頂けましたら幸いです。
Oba
投稿日時: 2009/4/27 18:43
対応状況: −−−
一人前
登録日: 2007/8/31
居住地: 静岡
投稿: 111
Re: Googleサイトマップ登録に関して
Linux_user 様
返信ありがとうございます。

/data/class/pages/LC_Page_Sitemap.php は同じ事を行いました。

私のした事は改編などと言いましても、コピーに過ぎないので恐縮ですが、以下へ載せておきます。

LC_Page_Sitemap.phpをコピーしてLC_Page_Sitemap_Mb.phpとし、
54行目を
class LC_Page_Sitemap_Mb extends LC_Page {
と、
80行目を
$this->staticURL = array(MOBILE_SITE_URL, SITE_URL . "rss/index.php");
とします。
104行目から
        print("<?xml version='1.0' encoding='UTF-8'?>\n");
        print("<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'
                xmlns:mobile='http://www.google.com/schemas/sitemap-mobile/1.0'>\n");

        // 静的なページを処理
        foreach($this->staticURL as $url) {
            $this->createSitemap($url, '', 'daily', 1.0);
        }

        // 商品一覧ページを処理
        $mobileProducts = $this->getAllProducts(true);
        foreach($mobileProducts as $mobileProduct) {
            $this->createSitemap($mobileProduct['url'], '', 'daily');
        }

        // 商品詳細ページを処理
        $mobileDetails = $this->getAllDetail(true);
        foreach($mobileDetails as $mobileDetail) {
            $this->createSitemap($mobileDetail['url'], 
                                 $this->date2W3CDatetime($mobileDetail['update_date']));
        }

        print("</urlset>\n");
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }

    /**
     * Sitemap の <url /> を生成する.
     *
     * @param string $loc ページの URL ※必須
     * @param string $lastmod ファイルの最終更新日 YYYY-MM-DD or W3C Datetime 形式
     * @param string $changefreq ページの更新頻度
     * @param double $priority URL の優先度
     * @return Sitemap 形式の <url />
     * @see https://www.google.com/webmasters/tools/docs/ja/protocol.html#xmlTagDefinitions
     * TODO Smarty に移行すべき?
     */
    function createSitemap($loc, $lastmod = "", $changefreq = "",
                           $priority = "") {
        printf("\t<url>\n");
        printf("\t\t<loc>%s</loc>\n", htmlentities($loc, ENT_QUOTES, "UTF-8"));
        if (!empty($lastmod)) {
            printf("\t\t<lastmod>%s</lastmod>\n", $lastmod);
        }
        if (!empty($changefreq)) {
            printf("\t\t<changefreq>%s</changefreq>\n", $changefreq);
        }
        if(!empty($priority)) {
            printf("\t\t<priority>%01.1f</priority>\n", $priority);
        }
   	print("<mobile:mobile/>\n");
        printf("\t</url>\n");
    }


     * TOPページの情報を取得する.
     * すべての編集可能ページの情報を取得する.

    /**
     * すべての商品一覧ページを取得する.
     *
としました。(赤字部分の該当文は消しました。
あと、/data/class_extends/page_extends へ、LC_Page_Sitemap_Ex.phpをコピーし、LC_Page_Sitemap_Mb_Ex.phpとして置きます。
そのファイルの
25行目を
require_once(CLASS_PATH . "pages/LC_Page_Sitemap_Mb.php");

36行目を
class LC_Page_Sitemap_Mb_Ex extends LC_Page_Sitemap_Mb {
とします。
あとは、html/以下へ、sitemap.phpをコピーし、sitemap_mb.phpとして置きます。
そのファイルの
26行目を
require_once(CLASS_EX_PATH . "page_extends/LC_Page_Sitemap_Mb_Ex.php");

としました。

これで、警告を回避できました。
しっかりとした知識が無いので、間違ってるやもしれません。
では。
loopus
投稿日時: 2009/4/30 11:29
対応状況: −−−
半人前
登録日: 2007/11/27
居住地: 静岡県浜松市
投稿: 11
Re: Googleサイトマップ登録に関して
私が持っている環境で試してみました。

確かに
http://ドメイン名/mobile/
でアクセスするとStatus 302を返しますが、

http://ドメイン名/mobile/index.php
とすると、Status 200になります。

個別商品ページ
http://ドメイン名/mobile/products/detail.php?product_id=xxxx
なども直接開くと200になります。


モバイル版は使ってないのでソースとかよく分かっていませんが、個別ページで302ということは、PHPの設定も疑った方が良いのかもしれませんね。
tao_s
投稿日時: 2009/4/30 12:35
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 758
Re: Googleサイトマップ登録に関して
モバイルサイトマップでは私も以前悩みました。
http://www.syndicate-st.com/shop/では、PC版とモバイル版を別々に出力しています。

http://www.syndicate-st.com/shop/mobile_sitemap.phpがモバイル版にあたります。

302リダイレクトに関してですが、
以前ここにも書きましたが、PHPで
header("Location:http://xxx.yyy.zz");
とやると標準で302を返しますので、その前に
header( "HTTP/1.1 301 Moved Permanently" ); 
とすればgoogleサイトマップのエラーは解消されると思います。
Linux-user
投稿日時: 2009/5/1 13:05
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: Googleサイトマップ登録に関して
ご返信ありがとうございます。

> Oba 様
Oba 様の方法で、mobile版のSitemapを作成し、
併せて、モバイルに不要な出力オプションを削除し、<mobile:mobile />を追加し、
Google モバイルサイトマップに準拠したフォーマットに致しました。

現在、Googleウェブマスターツール上に登録済で、経過観察中なのですが、
レポート形式・フォーマットは「ケータイ」として認識されているようです。

まだエラー警告を受けるには時間が掛かりそうですが、
上記設定のみでは、302リダイレクトが解決していませんので、恐らくエラー警告を受ける気がします(・・多分)。


> loopus 様
http://ドメイン名/mobile/index.php
としても、Status 302になりました。

やはりPHPの設定のどこかがおかしいのでしょうか・・
--------------------------------------------------------------------------------
View HTTP Request and Response Header
http://web-sniffer.net/

上記URLで確認:「http://ドメイン名/mobile/index.php」
HTTP Status Code: HTTP/1.1 302 Found
--------------------------------------------------------------------------------


> tao_s様
header関数に関してですが、PHPに関しては知識が浅い為、
いろいろと検索してみたのですが、EC CUBEの場合、どの箇所に入れて良いのかが分からず、

「 header("Location: 」が含まれるデータを検索・確認してみたのですが、
--------------------------------------------------------------------------------
/data/class/pages/LC_Page.php
/data/class/pages/admin/mail/LC_Page_Admin_Mail_Sendmail.php
/data/class/util/SC_Utils.php
/html/require.php
/html/shopping/card.php
/html/shopping/convenience.php
/html/shopping/load_payment_module.php
/html/shopping/loan.php
/html/shopping/loan_cancel.php
--------------------------------------------------------------------------------

モバイルに関する記述が見当たらず、この部分で苦戦しております。
※もしかしたら見当違いな部分を探していたのかも知れません。

HTMLファイルタグやPHPスクリプトによる出力よりも前に記述する必要があるようで、
「 site_frame.tpl 」 の<html>の直前に入れてみたのですが、これも違うようでした。

実際には、どのファイルのどの箇所に入れるのが適切なのでしょうか。

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header("Location:http://ドメイン名/mobile/" );
?>
seasoft
投稿日時: 2009/5/1 13:09
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7332
Re: Googleサイトマップ登録に関して
引用:

> loopus 様
http://ドメイン名/mobile/index.php
としても、Status 302になりました。

やはりPHPの設定のどこかがおかしいのでしょうか・・
--------------------------------------------------------------------------------
View HTTP Request and Response Header
http://web-sniffer.net/

上記URLで確認:「http://ドメイン名/mobile/index.php」
HTTP Status Code: HTTP/1.1 302 Found
--------------------------------------------------------------------------------

cookie を使える環境で試験されていませんか? > loopus 様
若干気になっていました。

index.php の有無で、そのような動作の違い発生するとしたら、その方がむしろ異常があるかも。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


ec-cube.co

統計情報

総メンバー数は48,243名です
総投稿数は92,885件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1908
4
468
1818
5
yuh
1600
6
red
1333
7
umebius
1296
8
fukap
907
9
h_tanaka
881
10
tsuji
852
11
shutta
835
12 ramrun 789
13
tao_s
758
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.