2017-02-13 23 views
-1

私はURLを持っており、絶対URLにリダイレクトしたい。以下は私のためには機能しません:.htaccessルール301の絶対URLへのリダイレクト

Redirect 301 /changecurrency/3?returnurl=/9ct-gold-belcher-chain-tg40dc http://www.example.com/9ct-gold-belcher-chain-tg40dc 

どうしたのですか?

+0

http getパラメータはURLの一部ではありません。あなたが正確にそれらのパラメータを取得しようとしているリクエストを正確に照合する必要がある場合は、書き換えモジュールによって提供される 'Rewriteond'を使用する必要があります。 – arkascha

+0

ありがとうございました@arkascha – Owen

答えて

1

http取得パラメータはURLの一部ではありません。あなたは(正確にそれらのパラメータを取得して)してみてくださいまさにその要求に一致する必要がある場合は、Rewriteondの書き換えモジュールによって提供されるを使用する必要があります。

RewriteEngine on 
RewriteCond %{QUERY_STRING} returnurl=/9ct-gold-belcher-chain-tg40dc 
RewriteRule ^/?changecurrency/3 http://www.example.com/9ct-gold-belcher-chain-tg40dc [END,R=301,QSD] 

上記のルールは、httpサーバのホスト構成で動作しますまた、動的構成ファイル(.htaccess)にも含まれています。

明らかに、書き換えモジュールをhttpサーバにロードする必要があります。

実際に古いバージョンのApache HTTPサーバーを使用している場合は、ENDフラグをLフラグに置き換える必要があります。

一般的なヒント:動的構成ファイル( ".htaccess")ではなく、httpサーバーのホスト構成内にこのようなルールを配置することを常に推奨します。これらのファイルは悪名高いエラーが発生しやすく、デバッグが難しく、サーバーの速度が遅くなります。彼らは、あなたがホスト構成(本当に安いホスティングサービスプロバイダを読む)を持っていないか、独自の書き換えルールを書くことに頼っているアプリケーションを持っている場合にのみ、最後のオプションとして提供されます(これは明白なセキュリティの悪夢です)。

+0

素敵な答え+1しかし、私はあなたが外部リダイレクションのためにENDを使うべきではないと思います。 – starkeen

+0

@starkeenいつも喜んで学んでいます...詳細を教えてください。 – arkascha

+0

ENDフラグは主に内部rewriteRulesとともに使用され、ルールの処理を終了します。それはあなたの例のように外部からの要求とは何の関係もありません。 – starkeen

関連する問題