http://q.hatena.ne.jp/1247206070の質問の続きです。


前回の質問で「日本語URLを利用するときはURLエンコードを利用する」と教えていただき、
ほとんどのURLは解決できたのですが

■タイトルが「漫/画太郎」の場合
http://xxx.jp/漫/画太郎
↑一つ下の階層に認識される

■タイトルが「漫&画太郎」の場合
http://xxx.jp/漫&画太郎
↑「漫」がタイトルとして認識され「&画太郎」はパラメータと判断される

とタイトル名をうまく取得できません。

wikipediaでは

■/.J
http://ja.wikipedia.org/wiki//.J

■&(シングル)
http://ja.wikipedia.org/wiki/%26_(シングル)

のように認識されているようなのですが、このようにするには
どうすればよいのでしょうか?

お願い致します。

回答の条件
  • 1人2回まで
  • 登録:2009/07/10 19:39:11
  • 終了:2009/07/17 19:40:02

ベストアンサー

id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/07/11 07:11:39

ポイント28pt

mod_writeで生成した

http://xxx.jp/detail/漫%26画太郎

ではうまく表示されません。

まず確認ですが、下記のようにスラッシュ以下をすべてURLエンコードしたもの(下記はUTF-8ベースです)を mod_rewite で置換するように指定していますか?

http://xxx.jp/detail/%E6%BC%AB%2526%E7%94%BB%E5%A4%AA%E9%83%8E
  ↓
http://xxx.jp/detail.php?title=%E6%BC%AB%2526%E7%94%BB%E5%A4%AA%E9%83%8E

次に、Apache 1.3系をご利用ということなので、スラッシュ(%2F)の扱いに注意が必要です。詳しくは「mod_rewriteでの%2F問題」をご覧ください。

その他の回答(1件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/07/10 19:59:15

ポイント42pt

どのような環境でURLエンコードを行おうとしているのか分かりませんが、前回回答でご紹介した「PHPでURLエンコードを行う」のサンプル・プログラムを実行していただければ分かるように、下記のような変換が行われます。(いずれもANK文字のため、UTF-8/EUC-JPといった日本語文字コードには関係なく一意に変換されます)


文字 URLエンコード
& アンパサンド %26
? クエスチョン %3F
半角スペース +
/ スラッシュ %2F
\ バックスラッシュ %5C

このため、ご質問にあるような事態は発生しません。

id:gelgelgel

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

言葉足らずだったかもしれませんが変換自体はうまくいっています。

少し気にかかって試してみたのですがmod_rewriteを使用しているのが原因の気がします。

元のURL

http://xxx.jp/detail.php?title=漫%26画太郎

では正常に表示されるのですがmod_writeで生成した

http://xxx.jp/detail/漫%26画太郎

ではうまく表示されません。もちろん「&」や「/」がない場合は

正常に表示されます。

分かりましたらご回答いただけると嬉しく思います。

2009/07/10 21:31:08
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/07/11 07:11:39ここでベストアンサー

ポイント28pt

mod_writeで生成した

http://xxx.jp/detail/漫%26画太郎

ではうまく表示されません。

まず確認ですが、下記のようにスラッシュ以下をすべてURLエンコードしたもの(下記はUTF-8ベースです)を mod_rewite で置換するように指定していますか?

http://xxx.jp/detail/%E6%BC%AB%2526%E7%94%BB%E5%A4%AA%E9%83%8E
  ↓
http://xxx.jp/detail.php?title=%E6%BC%AB%2526%E7%94%BB%E5%A4%AA%E9%83%8E

次に、Apache 1.3系をご利用ということなので、スラッシュ(%2F)の扱いに注意が必要です。詳しくは「mod_rewriteでの%2F問題」をご覧ください。

  • id:pahoo
    mod_rewrite をご利用ということは、httpサーバはApacheですよね。
    バージョンは幾つですか?
  • id:gelgelgel
    Apacheのバージョンは「1.3.39」です
  • id:gelgelgel
    pahooさん

    実際に確認するのが遅れ、お返事遅くなりました。
    せっかくご指導頂いたのですが、私はレンタルサーバーが利用できないため
    上記のような設定ができませんでした。

    URLエンコードを教えていただいたことで、表示に問題がある文字がかなり特定できましたので、
    今のところは文字変換などを行うことで対応したいと思います。

    ありがとうございました。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません