使用查询字符串路由子域名

使用查询字符串路由子域名
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->one(two))

答案1

它会是这样的

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用于替换apirewriteCond 中的域前缀

答案2

我最终发现,创建一个新的虚拟主机并将其指向一个新的、特定于 api 的 htaccess 文件更简单:

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

相关内容