mod_rewrite URLs bonitas não estão funcionando

1

Eu tenho o seguinte URL:

http://example.com/gallery/thumb.php?h=400&w=300&a=c&src=Img_0.jpg

Estou tentando usar mod_rewrite para tornar "bonito".

O URL desejado é:

http://example.com/h/400/w/300/a/c/src/Img_0.jpg

E meu mod_rewrite é:

RewriteRule ^h/(*)/w/(*)/a/(*)/src/(*)$ /gallery/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]

Mas estou recebendo um erro 500 Internal Server Error , que me diz que escrevi esta regra errado.

O que eu escrevi errado sobre isso?

EDIT: Não é uma duplicata. Minha pergunta é referente a um código específico que tentei escrever e não consegui escrever um código de trabalho.

    
por Jesse Elser 10.10.2016 / 05:16

1 resposta

3

Isso não é válido em sua expressão regular: (*) .

* denota uma repetição do caractere anterior. Como você não tem nenhum personagem no grupo, não há nada para repetir.

Se você alterar (*) para (.*) , a expressão se tornará válida. . denota "cada caractere", então talvez você queira restringir um pouco mais.

Uma expressão para o seu exemplo pode ser:

RewriteRule ^h/(\d+)/w/(\d+)/a/([a-z]+)/src/(.+)$ /gallery/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]

Em que \d indica um dígito e [a-z] de qualquer caractere nesse intervalo. Eu também alterei * para + , que corresponde a "1 ou mais caracteres", em vez de "0 ou mais", que seria o * .

    
por 10.10.2016 / 09:02