htaccess: Не удается проверить существование динамического файла! - PullRequest
1 голос
/ 10 июня 2011

Я написал создатель миниатюрных файлов на лету с помощью файла htaccess, который проверяет, существует ли запрошенный файл и, если нет, отправляет пользователя на страницу php для его создания. Мой файл htaccess выглядит так:

# Check the formatting (this works)
RewriteCond %{SCRIPT_FILENAME}%{QUERY_STRING} /([a-zA-Z0-9-]+).(jpg|gif|png)w=([0-9]+)&h=([0-9]+)(&c=(true|false))

# Only forward to thumbnail.php if file doesn't exist
#RewriteCond %{REQUEST_FILENAME} !-f   #this works but not for the correct filename!
RewriteCond %1-%2-%3-%4-%6.jpg !-f     # Doesn't work!!!

# If file doesn't exist, send here: (this works)
RewriteRule ^.*$ thumbnail.php?file_name=%1&type=%2&w=%3&h=%4&c=%6

Моя проверка существования файла, похоже, не работает ... старая версия, которая использует %{REQUEST_FILENAME}, работает, но это не то имя файла, которое мне нужно проверить. Я проверил, что новый файл %1-%2-%3-%4-%6.jpg имеет правильный вывод, но не вызывает условие!

На основании этого URL:

this-is-the-image-name.gif?w=200&h=100&c=true

Файл htaccess должен проверить, существует ли этот файл:

this-is-the-image-name-gif-200-100-true.jpg

Миниатюры и файл htaccess находятся в одной папке, но эта папка неизвестна и не может быть жестко закодирована. Нужно ли проверять полный путь? Если так, как я могу получить полный путь, но с моим собственным именем файла?

Вытаскивая мои волосы этим ... ПОЖАЛУЙСТА помогите! Спасибо.

1 Ответ

0 голосов
/ 14 июня 2011

Вы можете использовать свой PHP-скрипт для замены традиционной страницы «Ошибка 404»:

ErrorDocument 404 thumbnail.php

Затем вы можете получить запрошенный URL-адрес, используя PHP:

$url = $_SERVER["REQUEST_URI"];

Параметры могутбыть извлечены с использованием функции preg_match .

...