无论我尝试使用什么工具,它都无法正常工作。
我有一个 api,在 /api/v1/method.format?arg1=x&arg2=x 调用
我在 /api/v1/ 上有这个 .htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([^.]+).([^?]+)$ api.php?method=$1&format=$2&%1
这给了我更好的结果,但不接受额外的论点:
location /api/v1.1/ {
if (!-e $request_filename) {
rewrite ^/([^.]+).([^?]+)$ /api/v1.1/api.php?method=$1&format=$2&%1;
}
}
有任何想法吗?我在网上尝试了很多工具,但没有一个能给我一个可接受的结果:|
谢谢。
您的正则表达式存在几个问题。
/api/v1.1/
.$
符号结尾,然后?
才能出现。[^.]
和[^?]
,因为它们将允许比您想要的更多的字符。第一个接受除点之外的任何字符,这意味着斜杠也可以是您的方法名称的一部分。.
符号匹配任何字符,但你只想要文字点,你必须用斜线转义它\.
break
在语句的末尾附加标志rewrite
,这样就不会向客户端发送重定向,并且重写由 nginx 在内部处理。所以这是我的建议: