Windows 2003 サーバーの IIS6 で iirf を使用しています。クリーンな URL を表示し、クエリ文字列を削除する次のコードがあります。
RewriteRule ^/(.+)\?(.+)&(.+)\.(htm)$ /$1
RewriteRule ^/(.+)\?(.+)$ http://betatest.bracknell-forest.gov.uk/$1 [R=301]
# Redirect to ASP if it exists.
# e.g. example.com/foo will display the contents of example.com/foo.asp
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule ^(.+)$ $1.asp [L,QSA]
RedirectRule ^/(.+)\.(asp)$ http://betatest.bracknell-forest.gov.uk/$1 [R=301]
# Any bare URL will get rewritten to a URL with .htm appended
RewriteRule ^/([\w]+)$ /$1.htm [I,L]
RedirectRule ^/(.+)\.(htm)$ http://betatest.bracknell-forest.gov.uk/$1 [R=301]
問題は、RewriteRule ^/(.+)\?(.+)&(.+).(htm)$ /$1
RewriteRule ^/(.+)\?(.+)$ http:/を追加したことです。 /betatest.bracknell-forest.gov.uk/ $1 [R=301]
すべてのクエリ文字列パラメーターは、実際に必要な場所で削除されます (申し訳ありませんが、URL は外部からは利用できません): betatest.bracknell-forest.gov.uk/news.asp?page=2 実際、削除したい唯一のクエリ文字列条件のパラメーターは、Facebook パラメーター fb_action_ids=52352315213 が含まれている場合です。
RewriteCond %{QUERY_STRING} ^ fb_action_ids=(.)$ [I]
ルールの最初のペアの前ですが、何もしていないようです。