Answer the question
In order to leave comments, you need to log in
Apache 2.4 mod_rewrite why doesn't check for file existence work?
Faced a strange problem.
There is an .htaccess with the following content:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/([^/]+)/thumb/([^/]+)(/.+)?/(.+)\.(jpe?g|png|gif|svgz?|tiff?)$
RewriteCond %{DOCUMENT_ROOT}/assets/thumbs/thumb.inc/%2.inc.php –f
RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.%5 –f
RewriteRule ^(.*)$ assets/thumbs/thumb.php [L,QSA]
Answer the question
In order to leave comments, you need to log in
That's the joke. After the first 2 lines I send to the designated php with the addition of substitutions from the rules that do not work in the query string .. live absolute routes come to the script. And -f works with absolute routes but doesn't work..
Ответ на вопрос оказался довольно простым: закрались опечатки точнее кривые символы визуально не очень заметные.
И может быть давно бы эту проблему решил если бы Apache 2.2 смог мне ее показать в RewriteLog.
Косяк был замечен после того, как перешел на 2.4 и попытки запустить RewriteLog. Самое весёлое что до этого в логе эти опечатки не упоминались.
А всё оказалось слишком просто.
RewriteEngine On
RewriteBase /
# Если нет запрашиваемого файла
RewriteCond %{REQUEST_FILENAME} !-f
# Если URI к нему соответствует шаблону
RewriteCond %{REQUEST_URI} ^/([^/]+)/thumb/([^/]+)(/.+)?/(.+)\.(jpe?g|png|gif|svgz?|tiff?)$
# Если представлен файл оригинального изображения и полностью соответствуют имя и расширение
RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.%5 -f
# Или представлен файл оригинального изображения с таким же именем но с другим расширением
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.jpg -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.jpeg -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.tif -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.tiff -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.gif -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.bmp -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.png -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.svg -f [OR]
#RewriteCond %{DOCUMENT_ROOT}/%1%3/%4.svgz -f
# А также имеется правило преобразования для миниатюризатора в виде php файла в указанной директории
RewriteCond %{DOCUMENT_ROOT}/assets/thumbs/thumb.inc/%2.inc.php -f
RewriteRule ^(.*)$ assets/thumbs/thumb.php [L,QSA]
RewriteCond %{REQUEST_URI} ^/([^/]+)/thumb/([^/]+)(/.+)?/(.+)\.(jpe?g|png|gif|svgz?|tiff?)$ - точно работает ?
maybe nginx gives statics and does not even allow Apache to work in this case, I myself encountered a similar one, now I’m thinking how to be
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question