|
|
|
| Всем доброго времени суток!
Задача: при существовании файла выдавать его из файловой системы, а при отсутсвии - выдавать редирект на удаленный хост.
Столкнулся с такой проблемой: во всех случаях всегда не находит локальный файл. Все пути верные, файлы по ним доступны.
Конфигурация:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} /sites
RewriteRule . / [R,L,QSA]
RewriteCond %{REQUEST_URI} ^/mcskins
RewriteCond D:/Servers/Apache/Apache7/htdocs/mcskins/%{REQUEST_FILENAME} !-F
RewriteRule ^.*/(.*)\.png$ здесь был урл/$1.png [L,QSA]
RewriteCond %{REQUEST_URI} ^/mccloaks
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^.*/(.*)\.png$ здесь был урл/$1.png [L,QSA]
</IfModule>
Логи реврайта:
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (3) [perdir D:/Servers/Apache/Apache7/htdocs/] strip per-dir prefix: D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png -> mcskins/fedyei.png
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (3) [perdir D:/Servers/Apache/Apache7/htdocs/] applying pattern '.' to uri 'mcskins/fedyei.png'
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (4) [perdir D:/Servers/Apache/Apache7/htdocs/] RewriteCond: input='/mcskins/fedyei.png' pattern='/sites' => not-matched
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (3) [perdir D:/Servers/Apache/Apache7/htdocs/] strip per-dir prefix: D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png -> mcskins/fedyei.png
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (3) [perdir D:/Servers/Apache/Apache7/htdocs/] applying pattern '^.*/(.*)\.png$' to uri 'mcskins/fedyei.png'
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (4) [perdir D:/Servers/Apache/Apache7/htdocs/] RewriteCond: input='/mcskins/fedyei.png' pattern='^/mcskins' => matched
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (3) [perdir D:/Servers/Apache/Apache7/htdocs/] strip per-dir prefix: D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png -> mcskins/fedyei.png
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (3) [perdir D:/Servers/Apache/Apache7/htdocs/] applying pattern '^.*/(.*)\.png$' to uri 'mcskins/fedyei.png'
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (4) [perdir D:/Servers/Apache/Apache7/htdocs/] RewriteCond: input='/mcskins/fedyei.png' pattern='^/mcskins' => matched
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (4) [perdir D:/Servers/Apache/Apache7/htdocs/] RewriteCond: input='D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png' pattern='!-F' => matched
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (2) [perdir D:/Servers/Apache/Apache7/htdocs/] rewrite 'mcskins/fedyei.png' -> 'здесь был урл/fedyei.png'
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (2) [perdir D:/Servers/Apache/Apache7/htdocs/] implicitly forcing redirect (rc=302) with здесь был урл/fedyei.png
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (2) [perdir D:/Servers/Apache/Apache7/htdocs/] trying to replace prefix D:/Servers/Apache/Apache7/htdocs/ with /
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (1) [perdir D:/Servers/Apache/Apache7/htdocs/] escaping здесь был урл/fedyei.png for redirect
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (1) [perdir D:/Servers/Apache/Apache7/htdocs/] redirect to здесь был урл/fedyei.png [REDIRECT/302]
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (5) RewriteCond file (-F) check: path=D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png -> file=здесь был урл/fedyei.png status=302
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (4) [perdir D:/Servers/Apache/Apache7/htdocs/] RewriteCond: input='D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png' pattern='!-F' => matched
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (2) [perdir D:/Servers/Apache/Apache7/htdocs/] rewrite 'mcskins/fedyei.png' -> 'здесь был урл/fedyei.png'
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (2) [perdir D:/Servers/Apache/Apache7/htdocs/] implicitly forcing redirect (rc=302) with здесь был урл/fedyei.png
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (2) [perdir D:/Servers/Apache/Apache7/htdocs/] trying to replace prefix D:/Servers/Apache/Apache7/htdocs/ with /
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (1) [perdir D:/Servers/Apache/Apache7/htdocs/] escaping здесь был урл/fedyei.png for redirect
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a47848/initial] (1) [perdir D:/Servers/Apache/Apache7/htdocs/] redirect to здесь был урл/fedyei.png [REDIRECT/302]
Смущает данная строка:
127.0.0.1 - - [10/Jan/2012:11:12:39 +0300] [localhost/sid#995148][rid#a45840/subreq] (4) [perdir D:/Servers/Apache/Apache7/htdocs/] RewriteCond: input='D:/Servers/Apache/Apache7/htdocs/mcskins/fedyei.png' pattern='!-F' => matched
Ведь файл по данному пути открывается. | |
|
|
|
|
|
|
|
для: asdfasdf
(10.01.2012 в 12:26)
| | А Apache у вас какой версии? | |
|
|
|
|
|
|
|
для: cheops
(10.01.2012 в 14:46)
| | Apache 2.2.21, а что? | |
|
|
|
|
|
|
|
для: asdfasdf
(10.01.2012 в 17:14)
| | попробуйте -f вместо -F
У меня сработало. | |
|
|
|
|
|
|
|
для: Sfinks
(10.01.2012 в 17:38)
| | Ещё бы, ведь условие -f отвечает за валидность имен в файловой системе и никак не связано с подзапросами. | |
|
|
|
|
|
|
|
для: asdfasdf
(10.01.2012 в 17:14)
| | >Apache 2.2.21, а что?
Без заднего умысла, просто чтобы знать, где ситуацию воспроизводить. | |
|
|
|