JavaScriptによるURL転送パターン
一般的にはURLの転送を行う際には301リダイレクトを利用して、
恒久的な転送を行うのがベストであるとされています。
それでもサーバーやブログの仕様によっては301転送が利用できない場合もあります。
そんな時の代用策としてのmetaタグによるURL転送も利用できず、
利用できるのがJavaScriptしかない場合に利用する代替策がこの方法です。
この転送方法はあくまでも代用策であって、
可能な限りは以下でご紹介しているいずれかの転送方法を採用されることをお勧めします。
JavaScriptによるURL転送パターン
JavaScriptによるURL転送パターンと言っても、
書き方はいろいろあれどできることは1つしかありません。
転送を行うまで(処理が実行されるまで)の時間を指定することぐらいしかできません。
この方法は当然ながらJavaScriptが動作する(有効な)ブラウザのみでしか、
処理されませんのでmetaタグによるURL転送さえ行えない場合の、
最終的な代替策と言えます。
JavaScriptによるURL転送では以下のように記述します。
1 2 3 4 5 |
<script type="text/javascript" language="javascript"> <!-- location.href = "http://fc2.freeblg.info/transfer/"; // --> </script> |
0 秒URL転送
ページが表示されJavaScriptが実行されたらすぐにURL転送を行います。
この場合、元のページが表示されることはほとんどありません。
実際のURL転送の例は以下で確認できます。
この例ではHTMLタグで(ファイル自体はphpファイルです)に対して以下のように記載しています。
エラーが発生しました。後でもう一度やり直してください。 |
ページが読み込まれる過程ですぐにURLの転送が行われます。 これによって、http://fc2.freeblg.info/transfer/javascript0s/にアクセスすると、 http://fc2.freeblg.info/transfer/ へ自動的に転送されます。
curl -i -L http://fc2.freeblg.info/transfer/javascript0s/
JavaScriptによるURL転送を行った場合には、 ステータスコードが3xxなどではなく、200(OK)が返されます。 その為、WebクローラなどがJavaScriptによるURL転送によって、 サイトの評価を引き継ぐことを期待するのは難しいかもしれません。 一応、GoogleクローラはJavaScriptの内容も読んでいるようには感じますが。 実際にcURLによってアクセスを行った際のヘッダ情報は以下のようになります。
エラーが発生しました。後でもう一度やり直してください。 |
metaタグが利用できない場合には、
この方法で実際のユーザーアクセスを移転先に誘導することはできますが、
サイトの評価を維持できるかと言う点では未知数と考えられます。
3 秒URL転送
この例ではページが読み込まれJavaScriptが実行されてから
3秒後(3000ms)にURLの転送が行われます。
この場合、3秒程度のページ表示時間があります。
実際のURL転送の例は以下で確認できます。
この例ではHTMLタグで(ファイル自体はphpファイルです)に対して以下のように記載しています。
エラーが発生しました。後でもう一度やり直してください。 |
これによって、http://fc2.freeblg.info/transfer/javascript3s/にアクセスすると、 http://fc2.freeblg.info/transfer/ へ自動的に3秒後に転送されます。
curl -i -L http://fc2.freeblg.info/transfer/javascript3s/
この場合もステータスコードは200OKが返されます。 実際にcURLによってアクセスを行った際のヘッダ情報は以下のようになります。
エラーが発生しました。後でもう一度やり直してください。 |
既存のサイトからのURL転送でこの方法を利用することは、
あまりないかもしれません。
さいごに
URL転送の方法としてJavaScriptに頼ることは避けたい方法ではありますが、
無料ブログなどのサービスではメタタグの使用を認めていないことも多くあります。
そうした時にはせめてもの悪あがきとしてこうした方法を採用することも、
選択肢の一つです。
なお、無料ブログなどでテンプレートなどの編集で、
metaタグによる転送を行うには限界が多くあります。
個別記事のURL転送をテンプレートから行うことができても、
特定のURLでは表示しているページのパスが取得できないような場合です。
そうした場合にはどこか1ページへ集約してmetaタグ転送をすることになります。
しかし、そうした場合でもJavaScriptなら、
現在パスを取得して動的に転送先を振り向けることができます。
1 2 3 4 5 6 7 8 |
<script type="text/javascript" language="javascript"> <!-- setTimeout("transfer()", 0); function transfer(){ location.href = "http://fc2.freeblg.info" + location.pathname + location.search;; } // --> </script> |
strURL = "http://fc2.freeblg.info" + location.pathname + location.search;
このコードではJavaScriptにて要求されたURLから、
ドメイン名を除いたパスや検索されたキーワード部分などを取得し、
ドメイン名を移転先に置き換えたURLへ遷移させています。
移転先のドメイン名で要求のあったURLごとに、
正規のURLへと301転送をかけるといった方法が利用できることになります。
こうした方法は例示すると、
FC2ブログの年月アーカイブページなどのURL転送で有効です。
Apache,Apache Hadoop,Apache Subversion,Hadoop,HDFS,HBase,Hive,Mahout,Pigは、
Apache Software Foundationの米国およびその他の国における登録商標または商標です。
ApacheソフトウェアはApache Software License (原文)および
Apache License, 2.0 (原文)に基づきOpen Source Initiativeに承認されライセンスされています。
公開日: