• 締切済み

canonicalのURLエンコードについて

ネットで無料配布されているAmigodatabaseというPerlで、データベースのサイトを作っております。 以下は、データベースの結果一覧を出力するための、default.htmlというページのソースの一部です。 print <<"<!---HTML--->"; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"><HEAD> <link rel="canonical" href="$FORM{$SEARCH{1}{Name}}.htm"> (中略) <META name="description" content="$FORM{$SEARCH{1}{Name}} の名産果物です"> <TITLE>$FORM{$SEARCH{1}{Name}} の果物</TITLE> 上記、$FORM{$SEARCH{1}{Name}}には、 検索した際に使ったキーワードが表示自動挿入されます。 このキーワードが、例えば「りんご」だった場合に、 URLエンコードを行って、「%e3%82%8a%e3%82%93%e3%81%94」と 上記、<link rel="canonical" href="$FORM{$SEARCH{1}{Name}}">の $FORM{$SEARCH{1}{Name}}を、%e3%82%8a%e3%82%93%e3%81%94として、 つまり、<link rel="canonical" href="%e3%82%8a%e3%82%93%e3%81%94.htm"> としたいのですが、どのようなソースを書けば、実現できるのでしょうか? どうかアドバイスのほど、よろしくお願い致します。m(_ _)m

みんなの回答

  • NegiKamo
  • ベストアンサー率88% (39/44)
回答No.1

uri_escape()を使いましょう。 ちなみに、canonicalは相対パス指定もできますが、間違いがないように絶対パスで指定したほうがいいと思います。 また、フォームの入力をそのまま使っていますが、XSS対策のために、ここもエンコードするべきです。 やり方は、いろいろあるので、探してみてください。 use URI::Escape; my $escape_str = uri_escape($FORM{$SEARCH{1}{Name}}); my $canonical_url = "http://foobar.baz/$escape_str.htm"; print <<"<!---HTML--->"; (中略) <link rel="canonical" href="$canonical_url"> (以下略)

関連するQ&A

専門家に質問してみよう