1

クエリ文字列が機能しません..助けてください.次の URL があります

(申し訳ありませんが、テスト用の内部ドメイン リンクであるため、このページは使用できません)

次の URL が必要です: http://betatest.bracknell-forest.gov.uk/help

「指定されたファイルが見つかりません」というブラウザ メッセージが表示されます。ページ名から .htm を削除してクリーンな URL を返すように mod を書き直したことが原因であることはわかっていますが、クリーンな URL を受け入れてページを返すために何をする必要があるかわかりません。
これが私が持っているmod書き換えコードです:

RewriteRule ^/([\w]+)$ /$1.htm [I,L] #Any bare URL will get rewritten to a URL with .htm appended
RedirectRule ^/(.+)\.(htm)$       http://betatest.bracknell-forest.gov.uk/$1 [R=301]

RewriteCond %{QUERY_STRING} ^fb_action_ids=(.)$ #if the query string contains fb_action_ids
RewriteCond %{QUERY_STRING} !="" #if there is a query string
RewriteRule ^(.*) $1? [R=301,L]

R=301 を 2 回使用しているが、代わりに何を使用する必要があるかがわからないためだと思います。

help?fb_action_ids.... から help.htm?fb_action_ids.... に .htm を追加すると、必要なページが正常に返されますが、追加されていない URL のページ名を返す必要があります。

事前に助けてくれてありがとう。

4

2 に答える 2

0

iirfヘルプページを確認した後、次の文字列はすべてのクエリ文字列を取り除き、クリーンなURLを表示します。

RewriteRule ^/(.+)\?(.+)&(.+)\.(htm)$  /$1    
RewriteRule ^/(.+)\?(.+)$       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]

iirfには正規表現についてのある程度の理解が必要であり、正規表現とmod_rewiteの間には微妙な違いがあるようです。すべての助けを与えてくれてありがとう。

于 2012-10-15T18:16:02.550 に答える
-1

この2行で十分です。私はテストしました。

RewriteCond %{QUERY_STRING} fb_action_ids
RewriteRule ^(.*)$ $1? [R=301]

abc.htm がある場合、「abc?fb_action_ids......」ような形式の URL は「abc.htm」にリダイレクトされます。

ただし、http.conf で MultiView をオフにすると、正確な「abc」ファイルにリダイレクトされます。

于 2012-10-09T03:35:46.710 に答える