ホーム >> 左脳Script >> Movable Type >> 小技 >> タグ検索URLをスッキリ爽快に

タグ検索URLをスッキリ爽快に


今時のブログでは、URL短縮とかいうのが流行だそうで。

Movable Type なんかでブログを運営している方は判ると思いますが、「ブログ内検索」や「タグクラウドのタグリンク」等のリンクを進むと、あからさまに cgi を通した長いパラメータが連なったURLがアドレスバーに現れる事になります。

どうやら、コレを「人間が見た目にも解り易い、スッキリ爽快な短い URL にする。」のが流行のようですね。
しかし、見た目だけが流行の理由ではないようです。


実は、このようなURL短縮をした物そうでない物には、「検索エンジンのインデックス化に差がある」と言われています。
URLに「?name=value」のようなパラメータ指定があると、そのページを動的なページ(内容がころころ変わる)と判断され、よほど傾向が強くないとインデックス化しないという仕組みがあるようです。

これを、上記のようなパラメータ指定を含まない URL としてアクセス可能なページにすると、そのページは静的ページと判断され、検索エンジンにインデックス化されやすくなると言う理屈。

つまり、パラメータ型でない短縮URL にする理由は「SEO対策」と言うわけですね。

しかし、SEO以外にもメリットはあります。URLを短く出来ると言う事は、HTML容量を(かなり)大幅に削減できるのです。仮に、タグ1単語あたり80文字だったURL文字列が、半分の40文字になった場合、タグクラウドに20語あれば800文字分、50語あれば2000文字分の容量削減が出来ます。
ページ容量の削減は、トラフィックの軽減にも繋がり、無駄が減るということは、間接的にエコになるのです(かなり無理やり)。


罠(Movable Type 限定)

そもそも、タグのURL短縮の方法は、検索すれば直ぐにヒットする、いわばメジャーなカスタマイズであり、有効なSEO対策なので、その方法に関しては各自でナントカしていただくとして、今回、その一般的な方法で短縮したら、チョッとオカシクナッタヨーという現象がありました。
Movable Type の仕組みというかそんな感じの問題だったので、Movable Type でない人はこの章を読み飛ばして下さい。


.htaccessmod_rewrite の記述をする所は問題ありません。むしろ、動作自体はちゃんとするので、罠でもなんでもないのですが(ぉ

.htaccessを以下のように書き換えるのが一般的な方法ですね。

このブログでは、Movable Type のインストールパスからして捻くれている為、cgi へのパスをタグで指定してみました。

RewriteEngine on
RewriteRule ^tag/(.+)$ <$MTCGIPath$>mt-search.cgi?blog_id=<$MTBlogID$>&tag=$1
この表記は、Movable Type でタグのURL短縮の方法で極々一般的に用いられている、非常に広く知られている方法で、おそらく多くの方がこのままの表記で利用されているのではないかと予想しています。

そして、その検索結果のページを見てみると・・・

short_result.PNG
このように、検索結果として表示されるページの下部に、次の結果候補が無いにも拘らず「次 >」のリンクが表示されてしまいます。


タグのURL短縮を行わない、いわゆる普通の正しい状態が以下。 normal_result.PNG
いや、候補が少ないのに「1」とか出るのもアレなんですが。


只でさえ、要らない「1」とか出るのに、存在意義の全く無い「次 >」リンク(クリックしても何も起きない)が出るのはどうしたものかと、調べて見ると・・・


検索オプションの指定漏れである事が判りました。

正しく?はこのような記述に。

RewriteEngine on
RewriteRule ^tag/(.+)$ <$MTCGIPath$>mt-search.cgi?blog_id=<$MTBlogID$>&limit=20&tag=$1
結果の列挙数上限を付け加える事によって、「次 >」リンクが出なくなりました。


そもそも何故「次 >」リンクが出るのか「検索結果テンプレート」を見てみたのですが・・・

<mt:Ignore><!-- Used with the ajax search capability of the new search class --></mt:Ignore>
<div class="content-nav">
<mt:IfPreviousResults><a href="<$mt:PreviousLink$>" rel="prev" onclick="return swapContent(-1);">&lt; 前</a>&nbsp;&nbsp;</mt:IfPreviousResults><mt:PagerBlock><mt:IfCurrentPage><$mt:Var name="__value__"$><mt:Else><a href="<$mt:PagerLink$>"><$mt:Var name="__value__"$></a></mt:IfCurrentPage><mt:Unless name="__last__">&nbsp;</mt:Unless></mt:PagerBlock><mt:IfMoreResults>&nbsp;&nbsp;<a href="<$mt:NextLink$>" rel="next" onclick="return swapContent();">次 &gt;</a></mt:IfMoreResults>
</div>
どうにも、検索時の「limit」に関与するコードは、mtタグの機能として作られているようで、中身が見えません。


無用な「次 >」リンクは抑制できましたし、 コレに手を入れるには、少々手間がかかりそうなので、次の機会にしましょう。

そんなコトより・・・


長いものに巻かれてしまった?!

何故か「せっかく短縮スッキリ爽快なURLにしたのに、何故か長いURLへ飛ばされてしまう。」のです。

long_url.PNG
短くした意味ナイやんけ。

ブラウザのせいかとも思いましたが、どのブラウザでも同じように長いURLに飛ばされてしまいます。


実は、コレ「htaccess」によるアドレス転送の仕様のようで、「移動先のURLが、ドメインからのフルパスだと、ページを飛ばされる」と言うもの。
前述の表記だと、移動先URL指定が「<$MTCGIPath$>mt-search.cgi?blog_id=<$MTBlogID$>&limit=20&tag=$1」となっていますが、この(捻くれたパスにインストールしてしまったが為に着けざるを得なかった?!)「<$MTCGIPath$>」に問題がありそうです。

そこで調べてみると、<$MTCGIPath$>はドメインからのフルパスを返す模様。相対(ルートからの)パスを返すものはないのかと、調べてみると・・・ありました。

このような場合は「<$MTCGIRelativeURL$>」を使うと良いようです。

結果として、以下のような記述になりました。

RewriteEngine on
RewriteRule ^tag/(.+)$ <$MTCGIRelativeURL$>mt-search.cgi?blog_id=<$MTBlogID$>&limit=20&tag=$1



今回の結末は

今回得た教訓は、

「htaccess の URL 指定は、とにかくルートからの相対パスにする。」

という事になりました。



トラックバック(0)

トラックバックURL: http://n-yagi.0r2.net/sanoupulurun/mt-tb.cgi/182

コメントする

ホーム >> 左脳Script >> Movable Type >> 小技 >> タグ検索URLをスッキリ爽快に

アーカイブ

このブログ記事について

このページは、n-yagiが2009年6月24日 19:43に書いたブログ記事です。

ひとつ前のブログ記事は「jsにjsをインクルードする方法」です。

次のブログ記事は「swfobject.js を使った Flash 貼り付けプラグイン 改」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。