2017-06-28 20 views
1

私はインターネットを閲覧しており、これに対する解決策を見つけることができませんでした。クエリ文字列を含む.htaccessを使用してWordPress管理のサブドメインをリダイレクト

シナリオ

私は別のクエリ文字列を追加することによって、クエリ文字列と私のサブドメインファイルをリダイレクトしたいと思います。たとえば:

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value 

https://sub.domain.com/wp-admin/admin.php?foo=bar&key=value&new=string 

への試み

私は.htaccessファイルで、このリダイレクトルールを追加する必要があります。私はQSAを追加しようとしましたが、無用です:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{QUERY_STRING} key=value 
    RewriteRule ^admin\.php$ /admin.php?new=string [QSA,L] 
</IfModule> 

解決策は何だと思いますか?

+0

** R **エッジが必要な場合は、 'R'フラグが必要です。上記の内容は、内部的なrewrite_ですが、これはWordPressのルーティングと競合する可能性があります。 – MrWhite

+0

ありがとうございます。 '書き換え規則'を 'RewriteRule^admin \ .php $ /admin.php?foo=bar&key=value&new=string [R = 301、L]' のように再フォーマットする必要がありますか? – johnmichael

+0

また、この '.htaccess'ファイルはどこにありますか? – MrWhite

答えて

0

既存のルールは内部書き換えです。これをリダイレクトにするには、Rフラグを追加するだけです。ただし、URLに/wp-adminパスセグメントがないと思われますか?これは単にソースURLのようではないfoo=bar&key=value、クエリ文字列にkey=valueをチェック、あなたの元のコードのように

RewriteCond %{QUERY_STRING} key=value 
RewriteCond %{QUERY_STRING} !^new=string 
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?new=string [R,QSA,L] 

だから、のようなものを試してみてください。

UPDATE:RewriteCondディレクティブはnew=stringは、クエリ文字列の開始時にすでに存在していないことを確認することでリダイレクトループを防止します。

フラグQSAフラグは、要求のクエリ文字列が置換に追加される結果になります。したがって、結果のURLは...?new=string&foo=bar&key=valueになりますが、最初の要件のように?foo=bar&key=value&new=stringではなく、心配ですか?


UPDATE:あなたは、具体的new=stringのURLのparam が必要な場合は、あなたがQSAフラグを削除する必要がありますし、代わりにQUERY_STRINGサーバー変数を使用して、クエリ文字列にを追加。例:

RewriteCond %{QUERY_STRING} key=value 
RewriteCond %{QUERY_STRING} !new=string$ 
RewriteRule ^wp-admin/admin\.php$ /wp-admin/admin.php?%{QUERY_STRING}&new=string [R,L] 
+0

あなたの提案をありがとう。私はこれが近いと思うが、それほどではない。最後に 'new = string'を追加したいと思います。しかし、 '[R、QSA、L]'フラグでは、URL内で無限に 'new = string'クエリが繰り返され、エラーが発生します。 '[R、L]'フラグを試して、 'RewriteRule'の最後に正確なURL、' /wp-admin/admin.php?foo=bar&key=value&new=string [R、L] 'を使用しました。それは正しいURLに私を取得しますが、ERR_TOO_MANY_REDIRECTSが表示されます。 提案がありますか? – johnmichael

+0

はい、申し訳ありませんが、追加の_condition_はリダイレクトループを防ぐために必要です。私は自分の答えを更新し、URL paramを最初に追加するのではなく、クエリ文字列の最後に追加する例を含めました。 – MrWhite

+1

これは私が必要とするものです。第二の条件は決して考えなかった。ありがとうございました! – johnmichael

関連する問題