Reescritura de URL .htaccess en un elemento de múltiples parámetros

Reescritura de URL .htaccess en un elemento de múltiples parámetros

Acabo de pasar las últimas 10 horas de mi vida en esto y estoy dando vueltas en círculos, así que esperaba que alguien pudiera ayudarme.

Quiero que una URL específica se cargue así:

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

Cuando llega una URL en un formato como este, me gustaría reescribirla para que llegue al servidor como:

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

Basado en lo anterior, mi pregunta es doble:

  1. ¿Cómo puedo reescribir la URL en htaccess para cumplir con los requisitos anteriores?
  2. Si la URL original no tenía el parámetro de cadena de consulta de atributo, ¿cómo puedo garantizar que el atributo sea falso/en blanco/etc. cuando llegue al servidor a través de htaccess?

Respuesta1

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]

Los dos RewriteCondpueden omitirse. Más información:

Reescribir regla

Bandera QSA

Respuesta2

RewriteEngine On

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

Respuesta3

Aquí hay uno que tiene más posibilidades 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 dime si funciona

información relacionada