mod_rewrite no arquivo .htaccess para primeira parte desconhecida do caminho

1

Eu estou tentando escrever uma regra de reescrita para alterar as marcas de caminho para os parâmetros de consulta. É para um serviço da Web e só deve reescrever essa regra se o host iniciar com a API. Existem duas slugs que estou tentando capturar e reescrever. O primeiro é opcional e é uma versão (ou seja, v1.2) e o segundo é o domínio do serviço (por exemplo, clientes, transações, etc.).

link deve ser reescrito para? version = 2.5 & domain = customers

Eu também quero apoiar uma versão padrão para que

o link deve ser reescrito para? version = & domain = customers

Veja a aparência do meu arquivo .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^api\..*
RewriteRule ^v([\d\.]*)?\/?([^\/]*)$ ?version=$1&domain=$2

O primeiro exemplo acima funciona bem, mas não consigo fazer o caminho da versão padrão funcionar. Eu tentei uma tonelada de coisas diferentes. Eu pensei que começar com ^. * V ajudaria, mas não ajudou. Alguém sabe como combiná-lo quando você não conhece os personagens iniciais?

    
por Christopher Martin 11.09.2012 / 21:38

1 resposta

0

Tente isto:

# 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]

Isso pode ser feito em um único regex, mas é muito mais legível assim.

    
por 12.09.2012 / 06:18