Вы должны быть в состоянии сделать это в теории.Команда RewriteCond
имеет флаг -f
, который можно использовать для проверки существования файла.Вы должны иметь такое правило:
# If the file doesn't exist
RewriteCond %{REQUEST_FILENAME} !-f
# off to PHP we go
RewriteRule (.*) your-code.php [L,QSA]
Суть в том, что я предполагаю, что вы называете файлы в соответствии с входящими параметрами - поэтому приведенный выше пример может быть thumbnails/this-is-the-image-name-200-100.gif
,Если это так, вам нужно сгенерировать имя файла для тестирования на лету и проверить его вместо REQUEST_FILENAME
- детали этого действительно специфичны для вашей настройки.Если вы можете, я бы порекомендовал какую-то систему, которая не требует слишком больших усилий.Например, вы можете сохранить свои миниатюры в файловой системе в структуре каталогов, например /width/height/filename
, которую проще проверить в правиле перезаписи, чем modified-filename-width-height.gif
.
Если вы еще не проверили этоout, Руководство Apache по mod_rewrite содержит множество достойных примеров.
UPDATE : так что вам действительно нужно проверить динамическое имя файла по его внешнему виду,Я думаю, что самый простой способ сделать что-то подобное - это вставить имя файла, которое вы генерируете, в переменную окружения, например так (я заимствовал из вашего другого вопроса, чтобы уточнить это):
# generate potential thumbnail filename
RewriteCond %{SCRIPT_FILENAME}%{QUERY_STRING} /([a-zA-Z0-9-]+).(jpg|gif|png)w=([0-9]+)&h=([0-9]+)(&c=(true|false))
# store it in a variable
RewriteRule .* - [E=thumbnail:%1-%2-%3-%4-%6.jpg]
# check to see if it exists
RewriteCond %{DOCUMENT_ROOT}/path/%{ENV:thumbnail} !-f
# off to PHP we go
RewriteRule (.*) thumbnail.php?file_name=%1&type=%2&w=%3&h=%4&c=%6 [L,QSA]
Это полностью не проверено и может не работать наверняка.Я бы порекомендовал еще пару вещей:
Кроме того, я рекомендую вам одну большую рекомендацию: включите ведение журнала и установите RewriteLogLevel
на высокий уровень.Журнал для правил перезаписи может быть довольно запутанным, но определенно дает вам представление о том, что происходит.Для этого вам нужен доступ к серверу - вы не можете поместить конфигурацию регистрации в файл .htaccess, если я вспомню.