O operador *
é ganancioso. Isso significa que ele vai pegar o máximo que puder.
No seu exemplo, o primeiro bloco (.*)
corresponderá a /funny/1
. O segundo não corresponderá a nada, mas tudo bem, porque *
corresponde a "zero ou mais" do caractere anterior.
Usar um bloco diferente para combinar as partes entre as barras fará o truque. Algo parecido com isto:
RewriteRule ^/avatars/([a-z]*)/([0-9]*)$ /avatars.php?genre=$1&page=$2
ou isto:
RewriteRule ^/avatars/([^/]+)/([^/]+)$ /avatars.php?genre=$1&page=$2
Também não há necessidade do operador ?
após as barras, para que haja duas variáveis, as barras devem estar lá.
O Apache também possui operadores relutantes , que são o oposto dos operadores gananciosos. Você pode usá-los adicionando um ponto de interrogação após um operador normalmente ganancioso. Assim:
RewriteRule ^/avatars/(.*?)/(.*?)$ /avatars.php?genre=$1&page=$2