0

誤って生成されたURLがたくさんあり、正しいURLにリダイレクトしたいと思います。

これは良い例です:

http://example.com/search/?q=searchterm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F&scope=45%2F%2F%2F%2F%2F/

私はすでに次のルールでそれらのほとんどをリダイレクトすることができました:

    RewriteCond%{QUERY_STRING} ^(。*)%2F
    RewriteRule ^ search / $ / search /?%1 [NE、R = 301、L]

私が理解しているように、これは末尾の「%2F」が削除されてからルールが再びヒットするためにのみ機能します。Googleは限られた数のリダイレクトのみを受け入れます。

だから私は「%2f」の1つ以上のオカレンスで動作するようにルールを適応させようとします

これは私がどこまで得たかです:

    RewriteCond%{QUERY_STRING} ^(。*)((%2F)*)
    RewriteRule ^ search / $ / search /?%1 [NE、R = 301、L]

結果は次のとおりです。/search/?q=searchtermFFFFFFFFFFFFFFFF&scope=45FFFFF/

私は何が欠けていますか?

よろしく、アレクサンダー

4

1 に答える 1

1

クエリパラメータが2つしかない場合は、これでうまくいく可能性があります(もちろん、多かれ少なかれある場合は適応できます)。

# %1 Matches everything until the first group of %2F
# %2 Matches everything after the first group %2F until the second group
RewriteCond %{QUERY_STRING} ([^%2F]*)[%2F]*([^%2F]*)[%2F]*
RewriteRule ^search/$ /search/?%1%2 [NE,NC,R=301,L]

お役に立てば幸いです。

于 2012-07-03T12:56:22.073 に答える