はてなダイアリーのバグについて質問します。


1アカウントで複数のダイアリーを開設すると、http://d.hatena.ne.jp/はてなID+好きな文字列/記事の日付 というURLになります。

このURLをスマホで開くと、スマホ向けのURLとして自動的に
http://d.hatena.ne.jp/はてなID+好きな文字列/touch/記事の日付
が表示されます。

そこから、ページの最下部に移動すると「PC版のページを表示」というリンクがあります。

そこを押すと
http://d.hatena.ne.jp/はてなID%20好きな文字列/記事の日付
というURLに遷移してしまい、
「ご指定のページが見つかりません。
URLをもう一度お確かめ下さい。」
というエラーになります。

要は、スマホ向け・PC向けのページ切り替え時に、URL内の「+」が正しく処理されていません。

このバグは、ずいぶん昔からあるようですが、対処法はありますでしょうか。


回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2014/11/20 07:55:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

その他の回答0件)

id:language_and_engineering

このバグの具体的な再現手順を書いておきました。

かんたんに再現できます。


はてなダイアリーのバグの具体的な再現手順。画面キャプチャ付き (PC版とスマホ版の切り替え時に,URLのエスケープが不適切なため発生するエラー)

http://d.hatena.ne.jp/language_and_engineering/20140623/HatenaDi...

  • id:jwrekitan
    「%20」は" "(半角スペース)の事なので、
    おそらくは"+"と記述すべきところを間違えていて、
    ミスに気づいていない状況なんでしょう。
    はてなにバグ報告して修正してもらうしかないと思いますよ。
  • id:TransFreeBSD
    ソースとして規格に当たったら更新されたのがややこしくなっちゃってたので結論だけ書くと、
    URLのパス部分では+が特別の意味をもって使われないのでパーセントエンコーディングせずそのまま書けるけど、
    クエリ部分ではapplication/x-www-from-urlencodedでスペースの意味で使われるのでパーセントエンコーディングしないといけない。
    「はてなID+好きな文字列」は通常パス部分なのでそのままで良いけど、スマホ版からPC版に飛ぶときスマホが再度PC版からスマホ版に飛ばされない処理をする所で、URLをクエリ部分にパラメタとしていれてるけど、そこへのリンクがエスケープ処理してなくてapplication/x-www-from-urlencodedでの+と解釈されてスペースに変換されてる。
    だから隣のログイン/ログアウトのリンクのようにエスケープしてもらう、という以外の対処方法は思いつかない。
  • id:TransFreeBSD
    あ、ユーザー的にはユーザースクリプトで置換する手があるか。

    ちなみに張り忘れた別件だけど参考リンク
    http://koseki.hatenablog.com/entry/20120212/uricolon
    「HTTPのクエリパラメータにコロン(:)を書くのは不正なのか。」

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません