LocationMatch regexを使用して、特定のファイルがアプリケーションを介してアップロードまたはダウンロードされたときに照合しようとしています。アプリケーションは、URLでクエリ文字列を使用します。
リクエスト:
"POST /uploads.js?attachment_id=2&filename=issues%20(12).csv&content_type=application%2Fvnd.ms-Excel HTTP/1.1" 200 336
正規表現が「?」の後に続くクエリ文字列文字を表示できないようです。 URLで。
それは正しいですか?なぜですか?
クエリ文字列部分の内容を正規表現に一致させる方法はありますか?
実際には、Apache 2.4(またはそれ以下)以降、次のタグを使用することが可能です。
<LocationMatch "/test/upload.js">
<If "%{QUERY_STRING} =~ /query=test/">
..
'Your directives'
..
</If>
</LocationMatch>
この構成では、ディレクティブが適用されるのは、URLが「/test/upload.js」の形式で、クエリ「query = test」が含まれている場合のみです。
いいえ、LocationMatchはquery_stringと一致しません。
答えを補足するには、mod_rewriteのRewriteCondを使用してクエリ文字列を照合し、それを内部または外部に必要な場所にリダイレクトします。query_stringの照合以外の目的を指定していないため、これ以上言うことはほとんどありません。 。