Назад | Перейти на главную страницу

Переписать 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-адрес не имел параметра строки запроса атрибута, как я могу гарантировать, что атрибут будет ложным / пустым / и т. Д., Когда он попадет на сервер через htaccess?
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

RewriteEngine On

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

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

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]

Скажите, пожалуйста, работает ли