■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

【携帯】docomoで「サイトが移動しました(301)」が出てしまう

Garyuten > 【携帯】docomoで「サイトが移動しました(301)」が出てしまう @ 2011/3/24 13:55
BaserCMSのバージョン:1.6.10-beta
スマートURLの利用:ON
設置フォルダ:ドキュメントルート
利用しているデータベース:MySQL
PHPスキル(自己評価):C

タイトルの通りなのですが、baserCMSが出力する一部のリンクで、
docomoでは「サイト移動しました(301)」の警告が毎回出てしまいます。

原因は、リダイレクトにあるようです。

出力されているソースを見てみると、携帯版でもリンクURLは全てPC版のままなので、
PC版のページにアクセスした時に、useragentで携帯だったらリダイレクトさせてると見受けました。

◯リンク先:http://*****/seminar/archives/1
↓リダイレクト→ ★docomoで301の警告
◯携帯版:http://*****/m/seminar/archives/1


それで、フィード内のループでのリンクや、
$blog->prevLink($post)、$blog->nextLink($post)などのページ遷移のリンク関係の関数は、
全て携帯時アクセス時には /m/ の携帯版のリンクとして出力する仕様にしてもらえないでしょうか?

合わせて、ブログエントリー内で記述している同サイト内のリンクも、
自動的に "/m/"付きの携帯版アドレスに自動変更されると大変助かります。
(ブログエントリーは、ページの用に携帯版ページを持てないので…)

例)「以前、<a>こちらのエントリー</a>にも書きましたが…」 と本文中に他のエントリーにリンクを貼るケース

helperなど触ってみようかと思いましたが、私には難しかったので、
お願いするしかありません、、、、

暫定的ですが、携帯HOMEに出力するフィード一覧(お知らせ新着記事等)のリンクは、
以下のよう書いて変更できました。
意味が無いかもしれませんが残しておきます。


▼ /themed/***/feed/mobile/****.ctp
<?php
/**
 * フィード
 */
$feed->saveCachetime();

//URLを携帯版に変換する関数(同サイト内のみの簡易版)
function linkReplaceToMobile($url){
  $s = split($_SERVER["HTTP_HOST"], $url);
  return $s[0].$_SERVER["HTTP_HOST"].'/m'.$s[1];
}
?>
<cake:nocache>
<?php $feed->cacheHeader() ?>
</cake:nocache>
<?php if(!empty($items)): ?>
<dl class="DlInfo">
<?php foreach($items as $key => $item): ?>
<dt><span class="date"><?php echo date("Y.m.d",strtotime($item['pubDate']['value'])); ?></span></dt>
<dd><span class="title"><a href="<?php echo linkReplaceToMobile($link); ?>"><?php echo $item['title']['value']; ?></a></span></dd>
<?php endforeach; ?>
</dl>
<?php else: ?>
<p>現在、該当記事はありません。</p>
<?php endif; ?>


// docomo の 301の画像もお客様から頂いた(汗)ので添付しています。

ryuring > Re: 【携帯】docomoで「サイトが移動しました(301)」が出てしまう @ 2011/3/24 20:53
Garyuten さん

サイト内リンクについて、最新版の1.6.10 にて、スラッシュ(/)から始まるサイト内リンクについては、m/ を付加するようにしました。
(例)
http://xxx.xx/news/index → http://xxx.xx/m/news/index
http://xxx.xx/basercms/news/index → http://xxx.xx/basercms/m/news/index

ただし、フィードで読み込んだリンクについては、扱いが別ですので変換されません。
※ フィードを読み込んで表示するという純粋な仕様の為

打開策はあります。
通常、同サイト内のフィードを読み込む場合、次のような URL のフィードを設定するのですが、
http://xxx.xx/news/index.rss

この URL に m/ を付けると、携帯用の URL に変換されたフィードが出力されます。
http://xxx.xx/m/news/index.rss

上記の URL を新しいフィード設定として登録して携帯ページで読み込む事で、
m/ 付きのURL のタイトルリストとなります。

一度試されてください。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

Garyuten > Re: 【携帯】docomoで「サイトが移動しました(301)」が出てしまう @ 2011/3/25 15:17
ryuringさん
対応ありがとうございます!

引用:

サイト内リンクについて、最新版の1.6.10 にて、スラッシュ(/)から始まるサイト内リンクについては、m/ を付加するようにしました。
(例)
http://xxx.xx/news/index → http://xxx.xx/m/news/index
http://xxx.xx/basercms/news/index → http://xxx.xx/basercms/m/news/index

こちら、試してみたらうまく変換されてることを確認しました。
ありがとうございます。

ですが、ちょっと要望が。。。
スラッシュ(/)に加えて、同じドメイン名(http://****)から始まるリンクも同じ処理とするのは難しいでしょうか?

本文の編集画面でリンクを変更・設定するとき「ハイパーリンク」のウインドウが出ます。
ここで[▼プロトコル]が[http;//]がデフォルトになっているのと、
お客さんが内部リンクを貼るときは、殆どが対象ページのURLのコピペをしてしまうからです。


と、ここまで書いてみて気づいたのですが、
同じドメインでもBaserCMSの管理外の他のページにリンクさせたい時もありますね。

となると内部リンク変換は、敢えてスラッシュで始めさせると違いを出した方がいいのか、、、うーん。
難しいですね。

当面はスラッシュ(/)で始まるリンクで運営・対応します。
ありがとうございました。
ryuring > Re: 【携帯】docomoで「サイトが移動しました(301)」が出てしまう @ 2011/3/25 19:20
引用:

ちょっと仕様を検討する必要がありますね。
取り急ぎチケット切っておきました。
http://project.e-catchup.jp/issues/1281

WYSIWYGで貼り付ける際に、モバイルURLに変換するかどうかのチェックボックスを設けれれば一番安心ですね。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
8 人のユーザが現在オンラインです。 (7 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 8