Перезапись URL-адреса .htaccess в элемент с несколькими параметрами

Перезапись URL-адреса .htaccess в элемент с несколькими параметрами

Я потратил на это последние 10 часов своей жизни и бегаю по кругу, поэтому надеялся, что кто-то сможет мне помочь.

Я хочу, чтобы определенный URL-адрес загружался следующим образом:

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

Когда URL-адрес в таком формате попадает на сервер, я бы хотел переписать его так:

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

Исходя из вышесказанного, мой вопрос состоит из двух частей:

  1. Как мне переписать URL-адрес в htaccess, чтобы он соответствовал моим требованиям, изложенным выше?
  2. Если исходный URL-адрес не имел параметра строки запроса атрибута, как я могу гарантировать, что атрибут будет иметь значение false/blank и т. д. при обращении к серверу через htaccess?

решение1

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]

Эти два RewriteCondможно опустить. Дополнительная информация:

RewriteRule

флаг QSA

решение2

RewriteEngine On

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

решение3

Вот один из них, у которого больше шансов сработать:

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]

Пожалуйста, скажите мне, работает ли это?

Связанный контент