1

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]

ルールの最初のペアの前ですが、何もしていないようです。

4

1 に答える 1

1

どうにか解決できただけで、肩の荷が下りたように感じます。

#key thing I have changed is to specify the query string parameters fb_action_ids and fb_source
RewriteRule ^/(https?)://([^/]+)(/([^\?]+(\?(.*))?)?)?  /$1
RewriteRule ^/(.+)\?(fb_action_ids=(.*)|fb_source=(.*))$  http://betatest.bracknell-forest.gov.uk/$1 [R=301]

# e.g. example.com/foo will display the contents of example.com/foo.asp
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]
于 2012-10-17T16:34:56.010 に答える