Назад | Перейти на главную страницу

Маршрутизация поддоменов со строками запроса

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-> one (two))

Это было бы что-то вроде

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 используется для замены в api префикс домена из rewriteCond

В конце концов я обнаружил, что было проще создать новый виртуальный хост и указать его на новый, специфичный для api файл htaccess:

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