2017-01-31 5 views
1

Google検索コンソールにこの奇妙な404エラーがあり、URLが自分のサイトに存在しないため、ホームページにリダイレクトする必要があります。Nginxリダイレクト文字列変数とワイルドカードワードプレス

http://www.example.com/plugins/feedback.php?href=http%3A%2F%2Fwww.example.com%2Fremain-url-1%2F&_fb_noscript=1 
http://www.example.com/plugins/feedback.php?href=http%3A%2F%2Fwww.example.com%2Fremain-url-2%2F&_fb_noscript=1 
http://www.example.com/plugins/feedback.php?href=http%3A%2F%2Fwww.example.com%2Fremain-url-3%2F&_fb_noscript=1 

私はこの2回の試行を行ったが、それは

rewrite ^/plugins/feedback(/.*)$ http://www.example.com/ permanent; 
rewrite ^/plugins/feedback.php?href=http://www.example.com(/.*)$ /blog/ permanent; 

それは1枚のワイルドカードでこれをリダイレクトすることは可能です

を働いていないのですか?それは、クエリ文字列が含まれていない 正規 URIを使用するため

+0

すべての '/ plugins/feedback.php'をリダイレクトしようとしていますか、または3つの特定の' href'パラメータを持つものだけをリダイレクトしようとしていますか? –

+0

@リチャードスミス私は、特定のhrefパラメータを含むすべてをリダイレクトしようとしています。それが私にワイルドカードが必要な理由です。理想的には、これは次のようにする必要があります: 'rewrite ^/plugins/feedback.php(ここにワイルドカード)/ blog/permanent;' – Alex

答えて

1

rewrite指示パラメータをフィルタリングするために使用することができません。 $args変数を使用して、または$arg_xxx変数を使用してパラメータにアクセスできます。

しかし、$request_uriにはURI全体(クエリ文字列を含む)が含まれ、ifブロックまたはmapと一緒に使用して、検索するパラメータの存在をテストできます。例えば

if ($request_uri ~ ^/some/regular/expression) { 
    return 301 /; 
} 

ブロックはserverブロックスコープに配置され、又は通常/plugins/feedback.php URIを処理するであろう場所ブロック内ことができます。

if directive,map directive,if usage restrictionsを参照してください。

+0

これは便利です。ありがとう! – Alex

関連する問題