試す:
# strip out any params that's ob=, rpp= or ppg=
RewriteRule ^/?(.*)&ob=([^&]*)&(.*)$ /$1&$3 [L]
RewriteRule ^/?(.*)&rpp=([^&]*)&(.*)$ /$1&$3 [L]
RewriteRule ^/?(.*)&ppg=([^&]*)&(.*)$ /$1&$3 [L]
# if everything's gone, finally redirect and fix query string
RewriteCond %{REQUEST_URI} !&(ob|rpp|ppg)
RewriteRule ^/?(.*?)&(.*) /$1?$2 [L,R=301]
ここでの問題は、あなたの URL:
http://www.example.com/foo/bar/bla&ob=&ppg=&rpp=100&ob=&rpp=&ppg=&rpp=30&ppg=&ppg=1&rpp=10&rpp=50&ob=&ob=&ob=&rpp=40&ob=&rpp=5&rpp=30&rpp=&rpp=20&order_by=&results_per_pge=75
URIに多数の ob=、 rpp =、および ppg= があります。10 以上。つまり、その URL に対してこれらのルールを使用すると、500 内部サーバー エラーが発生します。デフォルトでは、apache の内部再帰制限は 10 に設定されています。つまり、10 回以上ループする必要がある場合 (上記の URL の場合はそうなります)、一時停止して 500 を返します。より高く設定する必要があります。
LimitInternalRecursion 30
または他の正気の数。残念ながら、htaccess ファイルでそのディレクティブを使用することはできません。サーバーまたは仮想ホストの構成に移動して設定する必要があります。