用querystrings路由子域

RewriteEngine on Options -Indexes DirectoryIndex index.php RewriteBase / RewriteRule ^user/([a-zA-Z]+)/([a-zA-Z]+)(/)?$ index.php?controller=main&function=$1&arguments=$2 [NC,L] 

我可以去mysite.com/one/twomain->one(two)

我想以相同的方式路由子域请求。

我如何设置api.mysite.com这样的规则来达到以下效果?

 controller=api&function=$1&arguments=$2 [NC,L] 

(让我去api.mysite.com/one/two打api->一(二))

这将是类似的东西

 RewriteCond %{HTTP_HOST} ^(.*)\.mysite\.com RewriteRule ^user/([a-zA-Z]+)/([a-zA-Z]+)(/)?$ \ index.php?controller=%1&function=$1&arguments=$2 [NC,L] 

mod_rewrite允许使用%N(其中N是1..9)来匹配先前RewriteCond中的括号内的模式,所以%1用于replacerewriteCond中的api域前缀

我最终发现,制作一个新的虚拟主机并将其指向一个新的特定于api的htaccess文件会更容易:

 ServerName api.mysite.com DocumentRoot /var/www/host/mysite.com/html AccessFileName .api.htaccess # <-- this did the trick