2017-11-08 8 views
1

私は、QUERY_STRINGを使用してユーザーをフレンドリーな読取りURLにリダイレクトするが、リダイレクトループを引き起こしているapache(2)RewriteRuleを作成しようとしています。リダイレクトループを引き起こしているApacheリライトルル

私が達成したいのは、ユーザーがindex.php?layout=751&artnr=# URLをリクエストしたときに、このリクエストが/another/page/#にリダイレクトされるということです。

、リダイレクトの動作方法ではなく、Apacheが、それはするRewriteRuleは次のようになり/another/pageページに

に達すると、ユーザーをリダイレクトし続ける:

RewriteCond %{REQUEST_URI} ^/index.php 
RewriteCond %{QUERY_STRING} ^layout=751&artnr=(.+)$ 
RewriteRule ^index\.php$ another/page/%1? [R=301,L] 

私は問題の多くを検索してきましたこのような問題については、QUERY_STRINGを使用しないため、私の問題を解決する答えは実際にはありません。

また、RewriteOptions maxredirects=1オプションを追加しようとしましたが、これで問題は解決されません。

ご協力いただければ幸いです。

ありがとうございます。

答えて

0

使用THE_REQUEST変数の代わりに、このようなREQUEST_URI

RewriteCond %{THE_REQUEST} /index\.php\?layout=751&artnr=([^\s&]*) [NC] 
RewriteRule^another/page/%1? [R=301,L,NE] 

THE_REQUEST変数は、ブラウザからのApacheが受信した元の要求を表し、それはいくつかの書き換えルールの実行後に上書きされません。

これは、このルールの上にRewriteBaseが設定されていることを前提としています。

この変更をテストするには、ブラウザのキャッシュをクリアするか、新しいブラウザを使用してください。

+1

ありがとう、それはついに動作します!また、説明のおかげで、どのように動作するのか理解しています。 – Stefan

+1

私はupvoteだろうが、私は十分な評判を持っていない.. – Stefan

+0

あなたは答えを受け入れた、それは十分です。すぐに回答をアップアップできるようにするために、15ポイントの回答があります。 – anubhava

関連する問題