0

不正なクエリ文字列を含む(制御できない)自分のサイトを指す外部リンクがあります。次に例を示します。

http://www.example.com/page/&query=string

上記の結果、私のサイトには404ページが表示されます。私のサイトには「http://www.example.com/page/」が存在するため、ユーザーが正しいコンテンツにアクセスできるように、.htaccessファイルを使用して不正なクエリ文字列を削除したいと思います。

だから私はこの書き直しまたはリダイレクトが欲しいです:

http://www.example.com/page/&query=string  -> http://www.example.com/page/

ありとあらゆる助けに感謝します!

4

1 に答える 1

1

要求元のブラウザに301リダイレクトを発行すると、次のようになります。

RewriteCond %{QUERY_STRING} query=string
RewriteRule ^/page/ /page/ [R=301]

ただし、適切なコンテンツを提供したいだけで、次のようにして301リダイレクトを回避できます。

RewriteCond %{QUERY_STRING} query=string
RewriteRule ^/page/ /page/ [PT,NS,E=QUERY_STRING:]

QUERY_STRINGが完全に削除されるので、注意してください。

/ page /のすべてではなく、いくつかの異なるクエリ文字列を書き直したい場合

RewriteCond %{QUERY_STRING} query=badstring1 [OR]
RewriteCond %{QUERY_STRING} query=badstring2 [OR]
RewriteRule ^/page/ /page/ [PT,NS]

すべてのRewriteRulesは、どこかに「RewriteEngine On」があることを前提としています。これは、ホストで行われている可能性があります。また、.htaccessリクエストに基づいて使用されていると思われるApacheのmod_rewriteモジュールも必要になります。

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

もちろん、これがスクリプトに渡されている場合を除いて、ページは引数を必要としない場合は引数を無視するため、これは非常に不要に思えます。この場合、コードでこれを処理できるはずですが、おそらく問題を引き起こしているフレームワーク。

これは、このテーマに関するすばらしい本です 。Pro Apache 277〜299ページを参照してください。

于 2012-05-07T23:26:04.597 に答える