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/two
去main->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