.htaccess-URL-Umschreibung in ein Element mit mehreren Parametern

.htaccess-URL-Umschreibung in ein Element mit mehreren Parametern

Ich habe gerade die letzten 10 Stunden meines Lebens damit verbracht und drehe mich im Kreis, deshalb hoffe ich, dass mir vielleicht jemand helfen kann.

Ich möchte, dass eine bestimmte URL wie folgt geladen wird:

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

Wenn eine URL in einem solchen Format eintrifft, möchte ich sie so umschreiben, dass sie folgendermaßen auf dem Server eintrifft:

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

Auf Grundlage der oben genannten Ausführungen habe ich eine zweifache Frage:

  1. Wie kann ich die URL in htaccess umschreiben, um meine oben genannten Anforderungen zu erfüllen?
  2. Wenn die ursprüngliche URL den Abfragezeichenfolgenparameter für das Attribut nicht hatte, wie kann ich dann sicherstellen, dass das Attribut falsch/leer/usw. ist, wenn es den Server über htaccess erreicht?

Antwort1

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]

Die beiden RewriteCondkönnen weggelassen werden. Weitere Informationen:

Regel neu schreiben

QSA-Flagge

Antwort2

RewriteEngine On

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

Antwort3

Hier ist einer, der mehr Chancen hat, zu funktionieren:

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]

Bitte sagen Sie mir, ob es funktioniert

verwandte Informationen