• 締切済み

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

  • Perl
  • 回答数1
  • ありがとう数9

みんなの回答

  • 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

  • シーサーブログのrel="canonical"属性

    seesaaブログでのrel="canonical" 属性について教えてください。 seesaaブログでURLを統一するためにcanonical属性を使おうと思っているのですが、どのように独自タグを使って設定すればいいでしょうか? 設定したいページは http://○○○.seesaa.net/ のサイトトップページと http://○○○.seesaa.net/article/○○○.html の個別記事ページ の二つを考えています。 seesaaにある独自タグを使って <link rel="canonical" href="独自タグ"/>で設定しようとしたのですが、なかなかうまくいきませんでした。 よかったらご教授御願いします。

  • link relは、通常どこに書き込めば良いでしょうか?

    link rel="canonical"や link rel="start" link rel="help" といったナビゲーションリンクは、HTML内部のどの辺りに 書き込めば良いのでしょうか。 BODYやHEADなどありますので、 どこにするのかがよく分からないため、お教えください。 宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • 書いてある内容がわからない???

    少し、興味本位でHTMLを読んでみたんですが、あまり理解できない行があります。誰か解る人いますか? <META content="74838609-6:00:50 AM" name=MN> <META contenten-us name=ms.locale> <META content=ms644966 name=Search.ShordId><!-- ~~~.aspx --> <LINK href="~/~.css" type=text/css rel=stylesheet> <LINK media=print href="~~.aspx" rel=alternate> <META content="MSHTML 6.00.2900.5512" name=GENERATOR> 何をしているのかの注釈を頂けると有難いです。

    • ベストアンサー
    • HTML
  • 301リダイレクトについて

    rel="canonical"属性についてですが、 <link rel="canonical" href="http://hoge.jp" /> と記述すれば301ができると、あるサイトとwebマスターツールに記載されていたのですが、サイトが移転した形跡がありません。 更新ボタンを押してもurlがかわりません。 時間差があるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • 一つの行にURLが複数ある場合の、URL抽出方法は?

    htmファイルの中から、リンクされたURL情報を抽出するのが今回の目的です。 ご相談したいのは、URL情報が一つの行中に複数ある場合の抽出方法です。 ちなみに「一つの行にある<a href>リンクが一つだけ」の場合ですと、正規表現 <a +href=('|\").*('|\") *> でURLデータを正しく抽出できるところまで来ています。 ですが一つの行にある<a href>リンクが2つ以上あった場合は、最長一致のルールに従って、うまく抽出できません。 具体的に申し上げると、 ケース1:<a href="www.hoge.htm">ほげ</a> <a href="www.hoge.htm"> が抽出できる。 ケース2:<a href="www.hoge.htm">ほげ</a><a href="www.hogehoge.htm">ほげほげ</a> <a href="www.hoge.htm">ほげ</a><a href="www.hogehoge.htm"> が抽出される。(本当は2つを別々に取り出したい)

  • link要素の意味/使い方について(<link rel="?"なものが多いので

    <head></head> 内の、 <link rev="made" href="mailto:~" /> <link rel="next" href="~" /> は、 ●どういう意味あいで書くもので、 ●実際問題どのような影響があるのでしょうか? ●またどのような記述が正しいのでしょうか? また、<link .... / > というものをこれら以外にもみかけたのですが、 これらの意味についてお教えいただけないでしょうか? あるいは、これらについてのまとめサイト的なものはないでしょうか? (英語でもOK) http://www.kanzaki.com/docs/html/link.html に一部解説がありますが、この解説に掲載されていないものも、たくさん下記にあるようです。 //=========================================================== //ある個人サイトでみかけたもの <link rel="openid.delegate" href="~" /> <link rel="openid.server" href="~" /> <link rel="schema.geo" href="~" /> <link rel="meta" href="/info/webwho.rdf" type="application/rdf+xml" title="~" /> <link rel="meta" href="/w3c/pics-labels.rdf" type="application/rdf+xml" title="~" /> <link rel="alternate" type="text/html" hreflang="en" href="./index.html.en" /> <link rel="alternate" type="application/xml" href="/info/rss.rdf" title="RSS update information" /> <link rel="help" href="/info/navi" /> <link rel="copyright" href="/info/disclaimer" /> <link rel="shortcut icon" href="./favicon.ico" /> <link rev="made" href="mailto:webmaster@example.com" /> ※なお、その個人サイトでは、 <link rev="made" href="mailto:webmaster@example.com" />と記述しているにも関わらず。 本文にて、 「メールアドレスwebmaster@example.comは無効にしています。メッセージは******(別のメアド)にお送り下さい。」 これって、矛盾はしていないのでしょうか? //----------------------------------------------------------- (↓これはさすがにわかります) <link rel="stylesheet" href="/hoge.css" type="text/css" /> //=========================================================== //wikipediaでみかけたもの // http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 <link rel="alternate" type="application/x-wiki" title="編集" href="~" /> <link rel="apple-touch-icon" href="~/apple-touch-icon.png" /> <link rel="search" type="application/opensearchdescription+xml" href="~/opensearch_desc.php" title="Wikipedia (ja)" /> <link rel="copyright" href="~/fdl.html" /> <link rel="alternate" type="application/rss+xml" title="Wikipedia をRSSフィード" href="~" /> <link rel="alternate" type="application/atom+xml" title="Wikipedia をAtomフィード" href="~" /> ※話題が若干ずれますが、 RSSが、 「ある個人サイトでみかけたもの」では application/xmlとなっており、 wikipediaでは、application/rss+xml となっていますが、どちらのほうが望ましいのでしょうか? //----------------------------------------------------------- //=========================================================== //w3cでみかけたもの // http://www.w3.org/ <link rel="meta" href="/Overview-about.rdf" /> <link rel="bookmark" href="#technologies" title="Technologies |" /> <link rel="bookmark" href="#news" title="News |" /> <link rel="bookmark" href="#search" title="Search |" /> <link rel="contents" href="#contents" title="Contents |" /> <link rel="bookmark" href="#Offices" title="Offices |" /> <link rel="bookmark" href="#systems" title="Systems |" /> <link rel="bookmark" href="#donors" title="Supporters |" /> <link rel="bookmark" href="#footnotes" title="Footnotes |" /> <link rel="alternate" type="application/rss+xml" title="W3C Home Page News RSS Channel" href="http://www.w3.org/2000/08/w3c-synd/home.rss" /> ご存じの方がいらっしゃいましたら、お教えいただければ幸いです。 以上、よろしくお願いいたします。

  • URLエンコード  文字数について

    URLエンコード  文字数について <a href="mailto:info@example.com?subject=%96%e2%82%a2%8d%87%82%ed%82%b9">メールはこちらへ</a> などHTMLの記述で文字化けを防ぐために下記文字列のように %96%e2%82%a2%8d%87%82%ed%82%b9 日本語をエンコードしていますが、ある一定以上の文字数を入力すると、そのリンクをクリックしてもメールソフトが起動しません。 文字数の制限があるのでしょうか? 詳しい方いらっしゃいましたら教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 文字列置換方法

    いつもお世話になっております。 早速質問なんですが、 ページの読み込み先によってページの文字を変更したいのですがよい方法は ないでしょうか? 例) <test10.html> <HTML> <head> </head> <body> <form name="main"> <a href="test11.html">移動1</a> </form> <a href="test12.html">ログインします</a> </body> </HTML> <test11.html> <HTML> <head> </head> <body> <form name="before"> 登録前です。 </form> </body> </HTML> <test12.html> <HTML> <head> </head> <body> <form name="after"> 登録後です。 </form> <a href="test10.html">トップに戻ります。</a> </body> </HTML> test12.htmlのページからtest.html10に戻った場合、 <a href="test11.html">移動1</a>を<a href="test13.html">移動2</a> <a href="test12.html">ログインします</a>を<a href="test14.html">ログアウトします。 と別の文字列に置換したいのですが可能でしょうか? 何かよい方法があればご教授願います。 javascriptでよい方法があれば幸いです。 よろしくお願いいたします。

  • form内からリンクを使用したいのですが。。。

    いつもお世話になっております。 strutsを使用して、画面遷移を行おうとしています。 form内からボタンを使用してなら、リンクを行うことは出来るのですが、普通のリンク(HTMLだとA HREF)で表示させたいのですが、うまくいかず、WEBでも見つけることが出来なかったので、質問いたしました。 下記ソースです。 <html:form action="/category"> <html:submit property="submit"><%=strC_name%></html:submit> <input type="hidden" name="c_no" value="<%=numC_no%>"> <input type="hidden" name="c_name" value="<%=strC_name%>"> </html:form> どなたか解決方法が分かる方、ご教授願います。

  • HTMLで別のフォルダのファイルにリンクする。

    HTMLとasp.netで開発をしています。 開発初心者です。 あるHTMLファイルから、別のフォルダのHTMLファイルへリンクし、 特定の位置に部分に移動したいのですが、うまくできません。 リンク元 <a href="../aa/bbb.aspx#test">test</a> リンク先 <th class="m"><a name="test">ここに飛んで!</a></th> リンク先のはじめに、 <form id="form1" name="form1" method="post" action="aaa.aspx">が 書かれているのですが、関係ありますか? リンク先を id や name で設定してみたりと、いろいろ試したのですが、うまくいきません(泣) ↓参考にしたURLです↓ http://www.tagindex.com/html_tag/link/a_url_id.html 宜しくお願いします。

    • ベストアンサー
    • HTML