2017-04-06 11 views
0

をリダイレクト:の.htaccessリダイレクトしようとすると、ユニークなURLとクエリ文字列で

/category/unique-name?foo=123&bar=&abc= 

に:

http://www.example.com/new/page 

私は、複数のクエリ文字列のパターンをリダイレクトに向けてのヒントを読んだ記事の大半ページ。私はリダイレクトを必要とする1ページの直後です。

私の最新の試みは、次のようになります。

 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} ^/category/unique-name/$ 
    RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
    RewriteRule ^(.*) $ http://www.example.com/new/page? [R=301,L] 

すべてのヘルプは大歓迎します!提案のすべてのための

UPDATE 2017年7月4日

感謝。私はそれらすべてを試しました、いくつかはエラー500に終わった、いくつかは効果がなかった。私は以下のどのであるリストアップしました...

#NO CHANGE

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/category/unique-name$ 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule^http://www.example.com/new/page [R=301,L] 

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/category/unique-name$ 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule^http://www.example.com/new/page [R=301,L] 

#1 ERROR 500

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page? [R=301,L] 

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/category/unique-name/?$ 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule^$ http://www.example.com/new/page [R=301,END,QSD] 

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page [R=301,END,QSD] 
+0

私は以下の提案を試してみて、私の結果を最初の投稿に更新しました^^^ – gurtfrobe

+0

"うまくいかなかった"が役に立たなかったので、もっと詳しく教えてください。 1. httpサーバのアクセスログファイルから結果につながる要求された_exact_ URLを投稿してください。2. httpステータス500を受け取った場合は、httpサーバのエラーログファイルで受け取ったエントリを投稿してください。 – arkascha

+0

また、あなたが実際に動作しているhttpサーバの私はそれが非常に古いものだと思う。 – arkascha

答えて

1

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/category/unique-name$ 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule^http://www.example.com/new/page [R=301,L] 
+0

提案をありがとうが、残念ながらそれは動作しませんでした。 – gurtfrobe

+0

試してみたところ、それは私にとってはうまくいったが、私は2つのステップを踏まなければならなかった.1)コードをhtaccessの先頭に置く。 2)http://www.example.com/new/pageの後ろに '? 'を入れてください。それ以外の場合は、URLに再度クエリ文字列が追加され、リダイレクトループが発生します。 –

0
、このようにそれを試してみてください

あなたの試行はperfに近いですect。これら二つのわずかに修正選択肢の一つと試してみる:(旧)

アプローチ1:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/category/unique-name/?$ 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule^$ http://www.example.com/new/page? [R=301,L] 

アプローチ2(旧):ここで

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page? [R=301,L] 

あなたが作動しますあまり古すぎないバージョンのapache httpサーバーでは、少しきれいな最終URLを実装できます:

アプローチ1 (新):

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/category/unique-name/?$ 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule^$ http://www.example.com/new/page [R=301,END,QSD] 

アプローチ2(新):

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$ 
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page [R=301,END,QSD] 

HTTPステータス500(内部サーバーエラー)にこれらのリードは、その可能性は確かにhttpサーバのバージョンがあるとしている場合あまりにも古く、最初の2つのアプローチに示されている作業に固執する必要があります。


しかしあなた自身の試みは(

...それが動作し、実際にあなたが達成しようとしているものを実装しています場合、私は疑問に思うあなたが外部リダイレクト(R=301)を実装しているという事実を見て、上記の変更されたバージョン)は、クリーンURLの外部でそれらのgetパラメータで着信要求を書き換えます。そのため、ブラウザで表示されるURLが変更されます。どちらがきれいで、細かいですか。でも:実際には次の着信要求を/new/pageに処理できますか?


と一般的なヒント

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

+0

提案をお寄せいただきありがとうございます。仕事。あなたのそれぞれのオプションの結果を投稿して更新しました。 – gurtfrobe

関連する問題