.htaccess文件中的mod_rewrite用于路径的未知第一部分

时间:2012-09-11 20:10:01

标签: apache .htaccess mod-rewrite

我正在尝试编写重写规则来更改路径段以查询参数。它适用于Web服务,并且只应在主机以api启动时重写此规则。我试图捕获和重写有两个slu ..第一个是可选的,是一个版本(即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开始会有所帮助,但事实并非如此。当你不知道起始字符时,有人知道如何使它匹配吗?

1 个答案:

答案 0 :(得分: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