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

.htaccess: обратная ссылка в RewriteCond для проверки существования файла?

Я пытаюсь сопоставить URL-адреса этого типа:

http://www.example.com/image/12345

Затем я хотел бы проверить, существует ли этот файл:

http://www.example.com/files/image_12345.jpg

Если это так, я бы хотел переписать URL-адрес, чтобы он указывал на этот файл.

Если этого не произойдет, я бы хотел переписать URL-адрес, чтобы он указывал на мой сценарий создания изображений:

http://www.example.com/img_gen.php?id=12345

Вот что у меня есть на данный момент:

RewriteCond %{REQUEST_FILENAME} ^/image/([0-9]+)$
RewriteCond %{DOCUMENT_ROOT}/files/images_%1.jpg !-f
RewriteRule ^image/([0-9]+)$ img_gen.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^image/([0-9]+)$ /files/images_$1.jpg [L]

Но все, что я получаю, это 404.

Если вы не можете понять, что делают ваши правила перезаписи, вам следует включить RewriteLog с повышенной степенью детализации:

RewriteLogLevel 3
RewriteLog "/var/log/rewrite.log"

Это должно дать вам неплохую стартовую позицию для дальнейшего расследования того, что происходит не так.