1

我正在尝试编写重写规则以将路径段塞更改为查询参数。它用于 Web 服务,仅当主机以 api 开头时才应重写此规则。我正在尝试捕获和重写两个蛞蝓。第一个是可选的,是一个版本(即v1.2),第二个是服务域(即客户、交易等)。

http://api.domain.com/v2.5/customers应该重写为 ?version=2.5&domain=customers

我还想支持默认版本,以便

http://api.domain.com/customers应该重写为 ?version=&domain=customers

这是我的 .htaccess 文件的样子:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^api\..*
RewriteRule ^v([\d\.]*)?\/?([^\/]*)$ ?version=$1&domain=$2

上面的第一个示例运行良好,但我无法使用默认版本路径。我尝试了很多不同的东西。我认为从 ^.*v 开始会有所帮助,但没有。当您不知道起始字符时,有人知道如何使其匹配吗?

4

1 回答 1

1

尝试:

RewriteCond %{HTTP_HOST} ^api\..*
RewriteCond %{QUERY_STRING} !version=
RewriteRule ^(v([\d\.]*))?\/?([^\/]*)$ /?version=$2&domain=$3 [L]

这使得该/v部分是可选的:

  • /v2.5/foo->/?version=2.5&domain=foo
  • /foo->/?version=&domain=foo
  • /v/foo->/?version=&domain=foo
于 2012-09-11T20:19:03.930 回答