パンダアップデート対策終了、動的URLを静的URLに置き換えてリンク切れ解消

by 管理者
7月 25日 2012 年

自サイト内の多数のリンク切れを修正しました。

このリンク切れは自分で作ったものではなく、CGIプログラムが機械的に存在しないURLをgoogleのクローラーに照会していたのですが、CGIプログラムで公開しているページ数が少なかったので動的URLの全てのページを手作業で静的ページに変換し、CGIプログラムを廃止しました。

 

ところで、動的ページを静的ページ(いわゆるHTML)に変換することは簡単ですが、それだけでは駄目です。

旧URL(動的リンク)を辿ってアクセスがあると404 Not Found エラーになってしまうので、.htaccessを使って旧URLを新URLに301リダイレクトさせる必要があります。

 

単純なURLのリダイレクトは以下の書き方で良いのですが、旧URL(動的リンク)に?が使ってあるのでこのままでは動きません。

Redirect permanent /hogehoge/old.html  http://www.trend-ai.com/new/new.html

 

そのままURLを記述したり、\でエスケープしましたが駄目でした。

Redirect permanent /cgi/patio/read.cgi?no=1&ctg=diy-sougou  http:/www.trend-ai.com/cgi/patio/diy-sougou-ds.html

Redirect permanent /cgi/patio/read\.cgi\?no=1&ctg=diy-sougou  http://www.trend-ai.com/cgi/patio/diy-sougou-ds.html

 

 

 

この書き方でも駄目です。 ? は\でエスケープできません。・・・これが分らず悩んだ。

RedirectEnginen On

RewriteRule ^/cgi/patio/read\.cgi\?no=1&ctg=diy-sougou       http://www.trend-ai.com/cgi/patio/diy-sougou-ds.html [R=301,L]

 

 

そこで、以下のようにしたらリダイレクト出来ました。

ミソは変換後の新URLの末尾に?をつけること。

?をつけることで、新URLの末尾に付与されるQUERY_STRINGを削除することができます。

RewriteCond %{QUERY_STRING}  "no=1&ctg=diy-sougou"
RewriteCond %{REQUEST_URI}   "/read.cgi"
RewriteRule ^(.*)$           http://www.trend-ai.com/cgi/patio/diy-sougou-ds.html? [R=301,L]

 

※ ?を付けないと、こんなURLに変換されてしまいます。

http://www.trend-ai.com/cgi/patio/diy-sougou-ds.html?no=1&ctg=diy-sougou

 

 

 

また、ついでに404エラーのページをgifアニメで作成しました。

http://www.trend-ai.com/404error.html

 

これは、今まで無い方が不自然だったのかな!?

 

*** 2012/08/11 追加 ***

※ URLの一部やリライトコマンドを大文字で記載しました。

この記事へのトラックバックURL