Я пытаюсь написать правило перезаписи, чтобы изменить ярлыки пути на параметры запроса. Это для веб-службы, и следует переписывать это правило, только если хост запускается с api. Есть два слага, которые я пытаюсь захватить и переписать. Первый является необязательным и представляет собой версию (например, 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 поможет, но этого не произошло. Кто-нибудь знает, как сделать так, чтобы оно совпадало, если вы не знаете начальных символов?
Попробуй это:
# Handle the version-including requests first..
RewriteCond %{HTTP_HOST} ^api\..*
RewriteRule ^v([\d\.]*)/([^/]*)$ ?version=$1&domain=$2 [L]
# ..then catch requests that don't include a version.
RewriteCond %{HTTP_HOST} ^api\..*
RewriteRule ^([^/]*)$ ?version=&domain=$1 [L]
Это можно сделать в одном регулярном выражении, но так он будет более читаемым.