让 apache 发送标头 401,除非存在参数

让 apache 发送标头 401,除非存在参数

我有一个 rest api,仅当请求中存在参数“manual”时才需要执行。

我尝试在虚拟主机声明中使用 RedirectMatch 指令

    RedirectMatch 401 "^\/api\/file\.php\?.*(?!manual).*$

但它不起作用。实际上,正则表达式的最后部分似乎都不起作用。

编辑:嗯,我刚刚发现 RedirectMatch 指令与 get 请求的查询部分不匹配......

答案1

好的。我可以用 mod_rewrite 来实现:

      RewriteCond %{REQUEST_URI} ^/api/file\.php$ [NC]
      RewriteCond %{QUERY_STRING}  !^.*\&manual=.*$ [NC]
      RewriteRule ^/api/file\.php - [R=401]

到目前为止一切似乎运行良好 ;)

相关内容