クエリストリング(/?q=)付きURLの転送検証
外部のサイトやブログなどからURL転送を行う際には、
元のURLが「…/?q=」や「…/?s=」や「…/?tag=」などの形式の場合もあります。
一般的にはこうしたURLの転送にはmod_rewriteが利用されます。
実際のところRedirectやRedirect Matchを指定してURL転送を行うと、
どのような挙動が得られるのかを本投稿にて検証を行っておきます。
それぞれの転送記述例
.htaccessに対してそれぞれのディレクティブ等で記述を行ってURL転送を試行します。
Redirect
Redirect (mod_alias)はクエリストリングの処理には対応していない旨が記載されています。
その為、基本的にはRedirectを利用してのURL転送は推奨されていません。
mod_alias – Apache HTTP サーバ バージョン 2.2 (引用)
mod_alias は簡単な URL 操作向けに設計されています。 より複雑な操作、クエリーストリングの操作には、mod_rewrite で提供されるツールを使用してください。
実際に検証を以下で行っていますが、
ヘルプの通りクエリストリング部分を引き継いだURL転送は行えますが、
基本的には、ディレクトリまたはファイル名までのURLを条件にマッチングする必要があります。
RedirectPermanent
RedirectPermanent(mod_alias)はクエリストリングの処理には対応していない旨が記載されています。
その為、基本的にはRedirectPermanentを利用してのURL転送は推奨されていません。
mod_alias – Apache HTTP サーバ バージョン 2.2
mod_alias は簡単な URL 操作向けに設計されています。 より複雑な操作、クエリーストリングの操作には、mod_rewrite で提供されるツールを使用してください。
実際に検証を以下で行っていますが、
ヘルプの通りクエリストリング部分を引き継いだURL転送は行えますが、
基本的には、ディレクトリまたはファイル名までのURLを条件にマッチングする必要があります。
Redirect Match
Redirect Match (mod_alias)はクエリストリングの処理には対応していない旨が記載されています。
その為、基本的にはRedirect Matchを利用してのURL転送は推奨されていません。
mod_alias – Apache HTTP サーバ バージョン 2.2
mod_alias は簡単な URL 操作向けに設計されています。 より複雑な操作、クエリーストリングの操作には、mod_rewrite で提供されるツールを使用してください。
実際に検証を以下で行っていますが、
ヘルプの通りクエリストリング部分を引き継いだURL転送は行えますが、
基本的には、ディレクトリまたはファイル名までのURLを条件にマッチングする必要があります。
mod_rewrite
よく使われるディレクティブではクエリストリングを用いたURL転送は、
そのままクエリストリング部分を転送先URLに付加する程度しかできませんでした。
やはりクエリストリングを利用したURL転送では、
mod_rewriteを利用したほうが圧倒的に便利です。
ただ、いかんせんできることが多すぎて、
こう!という解がなく、人によって様々なアプローチができる点が難しいところです。
さいごに
クエリストリングに絡むURL転送はサイト移転などで、
別サイトやブログなどからのURL変更時には必要になる作業です。
検索結果ページはともかくとしても、
カテゴリやタグなどのアーカイブページがこのクエリストリング付URL形式な場合もあります。
そうした既存のコンテンツを有効に活かすためにも、
クエリストリング形式のURLであってもできる限り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に承認されライセンスされています。
公開日: