我有一个 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]
到目前为止一切似乎运行良好 ;)