.htaccess URL reescrita para item multiparâmetros

.htaccess URL reescrita para item multiparâmetros

Acabei de passar as últimas 10 horas da minha vida nisso e estou andando em círculos, então esperava que alguém pudesse me ajudar.

Quero que um URL específico seja carregado assim:

http://example.com/f/2011/image.png?attribute=small

Quando um URL em um formato como este chega, gostaria de reescrevê-lo para chegar ao servidor como:

http://example.com/generate.php?f=2011/image.png&attribute=small

Com base no que foi dito acima, minha pergunta é dupla:

  1. Como posso reescrever o URL no htaccess para atender aos meus requisitos acima?
  2. Se o URL original não tivesse o parâmetro de string de consulta do atributo, como posso garantir que o atributo será falso/em branco/etc quando atingir o servidor via htaccess?

Responder1

RewriteEngine On
# If it's not an existing file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and it's not an existing directory...
RewriteCond %{REQUEST_FILENAME} !-d
# ...and it starts with "f/" then rewrite it to generate.php
RewriteRule ^f/(.*)$ generate.php?f=$1 [L,QSA]

Os dois RewriteCondpodem ser omitidos. Mais Informações:

RewriteRule

Sinalizador de QSA

Responder2

RewriteEngine On

RewriteRule ^([a-z]+)/([0-9]+)/image.png?attribute=small$ generate.php?f=$2/image.png&attribute=small&%{QUERY_STRING} [L]

Responder3

Aqui está um que tem mais chances de funcionar:

RewriteEngine On
# If it's not an existing file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and it's not an existing directory...
RewriteCond %{REQUEST_FILENAME} !-d
# ...and it starts with "f/" then rewrite it to generate.php
RewriteRule ^([a-z]+)/([0-9]+)/image\.png$ /generate.php?f=$1 [QSA,L]

Por favor me diga se funciona

informação relacionada