頑張らない!でも諦めない!必死にならずにええかげん

RedirectPermanent x クエリ文字列(/?q=)URL転送

RedirectPermanentディレクティブによるクエリストリング(「/?q=xxx」 など)付きURLの転送が、
どのように転送されるか、されないのかについて本投稿では検証しています。

素直にmod_rewriteを利用して転送するしかないようです。

 

RedirectPermanent による クエリ文字列を含むURL転送検証

通常、RedirectPermanentディレクティブによってクエリ文字列付きのURLの転送は、
基本的にサポート外の為、利用することはできません。

実際に.htaccessに対してクエリ文字列を含むような、
URL転送指定を行った場合にどのような挙動が見られるのかを例示します。

 

一般的によく見かけるクエリ文字列を含むURL形式は以下のような感じかと思います。
他にもあるとは思いますが。

  • /?q=nnn
  • /?s=keyword
  • /?tag=tagname

 

RedirectPermanent

RedirectPermanent (mod_alias)はクエリストリングの処理には対応していない旨が記載されています。
その為、基本的にはRedirectPermanentを利用してのURL転送は推奨されていません。

mod_alias – Apache HTTP サーバ バージョン 2.2 (引用)

mod_alias は簡単な URL 操作向けに設計されています。 より複雑な操作、クエリーストリングの操作には、mod_rewrite で提供されるツールを使用してください。

 

では推奨していないということですが、
実際にどのような挙動をするのかを確認してみます。

ここでは「/?s=keyword」形式を例として、
検索キーワードを含むURLを対象に検証を行います。

要求URLの指定部分を短いものに変化させながら、
転送が行われるか否かを確認していきます。

 

とは言え、RedirectPermanent ディレクティブは完全一致でURL転送が行われますので、
「/dir/?s=keyword」パターンで転送されなければ、
そもそも、クエリストリングによるURL転送が全く行えないことはすぐに分かりますが。

 

/dir/?s=keyword による判定

.htaccess ファイルに以下のように記載を行います。

 

アクセスによる動作確認

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir1/?s=keyword

 

エスケープ記述による確認

念のため「?」のエスケープが有効かどうかの確認もしておきます。
※「\?」と入力し特殊文字「?」をエスケープしています。
.htaccess ファイルに以下のように記載を行います。

 

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir1esc/?s=keyword

 

こうした記述では動作しないことが分かります。

 

/dir/?s= による判定

.htaccess ファイルに以下のように記載を行います。

 

アクセスによる動作確認

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir2/?s=keyword

 

エスケープ記述による確認

念のため「?」のエスケープが有効かどうかの確認もしておきます。
※「\?」と入力し特殊文字「?」をエスケープしています。
.htaccess ファイルに以下のように記載を行います。

 

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir2esc/?s=keyword

 

こうした記述では動作しないことが分かります。

 

/dir/?s による判定

.htaccess ファイルに以下のように記載を行います。

 

アクセスによる動作確認

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir3/?s=keyword

 

エスケープ記述による確認

念のため「?」のエスケープが有効かどうかの確認もしておきます。
※「\?」と入力し特殊文字「?」をエスケープしています。
.htaccess ファイルに以下のように記載を行います。

 

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir3esc/?s=keyword

 

こうした記述では動作しないことが分かります。

 

/dir/? による判定

.htaccess ファイルに以下のように記載を行います。

 

アクセスによる動作確認

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir4/?s=keyword

 

エスケープ記述による確認

念のため「?」のエスケープが有効かどうかの確認もしておきます。
※「\?」と入力し特殊文字「?」をエスケープしています。
.htaccess ファイルに以下のように記載を行います。

 

実際にアクセスするとリダイレクトは行われません。

http://q-redirectperma.trce.info/dir4esc/?s=keyword

 

こうした記述では動作しないことが分かります。

 

/dir/ による判定

.htaccess ファイルに以下のように記載を行います。

 

アクセスによる動作確認

実際にアクセスすると通常のリダイレクトが行われます。

http://q-redirectperma.trce.info/dir5/?s=keyword

以下のURLへ転送されます。
転送先のURLに対してもクエリストリングが引き継がれていることが確認できます。

http://redirect.trce.info/?s=keyword

 

こうした転送では転送先にWordPressなどが導入されていれば、
クエリストリングをWordPressが処理し、サイト内の検索結果を表示させることができます。

 

プロモーション(btm)

Google or AdMax Promotion (it)

検証結果

結果として、どのように記述したとしても、
クエリストリング部分を判定条件に記述することはできないことが分かります。

記述した場合には一切マッチングが行われず転送は行われません。

 

ただ、通常通りディレクトリ指定によるマッチングを行った場合、
転送先のURLには、クエリストリング部分のURLは付与されて転送されます。

 

ヘルプに明記されているとおり、
クエリストリングを含むURL形式はmod_rewriteを利用して転送する必要がありそうです。

mod_rewriteであれば柔軟な転送を行うことができます。

 


公開日:
最終更新日:2014/12/17

最後までお読みいただきありがとうございました。

ページ
すべて展開 | すべて省略

Rakuten Promotion

ブログ記事のご紹介
すべて展開 | すべて省略