Regra de reescrita do Apache baseada em regex

1

Estou lutando um pouco com uma regra de reescrita do Apache.

Eu preciso que ele seja baseado em um regex para que qualquer coisa /5chars E.g. example.com/F7heY é redirecionado internamente para files/$1

Eu tentei isso usando:

RewriteRule ^([a-zA-Z0-9_-]){3,5}$ files/$1 [NC,L]

Sem sorte. Reescrever regras não são o meu ponto strong e isso está me deixando louco! Qualquer ajuda será muito apreciada.

    
por James Dawson 14.07.2018 / 21:02

1 resposta

4

Você precisa da barra inicial. Experimente este:

RewriteRule ^/(.{5,5})$ /files/$1 [L]

ou isto:

RewriteRule ^/(.....)$ /files/$1 [L]

Não sei por que você está especificando uma lista de caracteres legais, pois acho que você tem todos eles na sua lista [] . Colocando a especificação de contagem fora dos parênteses, você está garantindo que $1 contenha apenas um caractere. Suas necessidades especificam exatamente 5 caracteres, não 3 a 5 caracteres. É por isso que escrevi {5,5} . Mas você pode repetir o padrão 5x, como em (.....) . Como você especifica caracteres maiúsculos e minúsculos no seu padrão, não é necessário o modificador NC (sem maiúsculas e minúsculas). Você não precisa disso para qualquer correspondência de char, . .

    
por 14.07.2018 / 22:01

Tags