Я потратил на это последние 10 часов своей жизни и бегаю по кругу, поэтому надеялся, что кто-то сможет мне помочь.
Я хочу, чтобы определенный URL-адрес загружался следующим образом:
Когда URL-адрес в таком формате попадает на сервер, я бы хотел переписать его так:
http://example.com/generate.php?f=2011/image.png&attribute=small
Исходя из вышесказанного, мой вопрос состоит из двух частей:
- Как мне переписать URL-адрес в htaccess, чтобы он соответствовал моим требованиям, изложенным выше?
- Если исходный 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
можно опустить. Дополнительная информация:
решение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]
Пожалуйста, скажите мне, работает ли это?