Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Не срабатывает RewriteRule, если файл существует (http://www.flasher.ru/forum/showthread.php?t=142514)

Serg65535 23.07.2010 08:58

Не срабатывает RewriteRule, если файл существует
 
Доброе время, уважаемые коллеги.
Облазил уже всё, что мог — никак не найду причину странного поведения:

Я заметил, что на моём хостинге не срабатывают те правила RewriteRule, для которых запрашиваемый адрес реально существует.
Такое ощущение, что Apache даже не сообщает mod_rewrit'у об этом, а сразу отдаёт файл. Если обратится к несуществующему файлу — то правило срабатыват.

На денвере и другом хостинге всё работает.

Есть идеи, где эти настройки копать? Настройки Апача, или может в .htaccess можно что-то добавить?

Стоит задача перехватить обращения к некоторым файлам, и проделать с ними некоторые операции перед выдачей. Файл реально существуют, т.е. если отключить RewriteRule — будет отдан настоящий файл.

Заранее спасибо.

mooncar 23.07.2010 09:15

А техподдержка что говорит?

Serg65535 23.07.2010 09:20

Цитата:

Сообщение от mooncar (Сообщение 924282)
А техподдержка что говорит?

Пока ничего - я списывал всё на свои ошибки, пока не сделал несколько тестов.
К сожалению, это выделенный сервер, все машины настроены под клиентов, поэтому не хочу дёргать платный саппорт, пока есть шанс понять причину такого поведения mod_rewrite.

mooncar 23.07.2010 10:15

Насколько я понимаю идеологию .htaccess, правила, которые записаны в нем, имеют приоритет над правилами из родительских папок или пользовательских настроек Apache в httpd.conf. А покажите кусок из .htaccess .

Serg65535 23.07.2010 10:29

Цитата:

Сообщение от mooncar (Сообщение 924289)
Насколько я понимаю идеологию .htaccess, правила, которые записаны в нем, имеют приоритет над правилами из родительских папок или пользовательских настроек Apache в httpd.conf. А покажите кусок из .htaccess .

Любое, даже самое лобовое правило. пример:

Код:

RewriteEngine On
RewriteRule ^(photos/.*\.jpg)$ watermark.php?filename=$1 [L]

Мой сервер ведёт себя так: если файл /photos/test.jpg есть, то он отдаётся напрямую, минуя скрипт. Если такого файла нету, то Rewrite перекидывает управление на watermark.php. А на локальной машине и другом хостинге watermark.php получает управление в любом случае.

mooncar 23.07.2010 10:48

Да, странно, тут вроде бы все верно.

Может быть явно попробовать указать условие существования файла?
Типа
Код:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(photos/.*\.jpg)$ watermark.php?filename=$1 [L]


Serg65535 23.07.2010 11:18

Нашёл причину, рву на себе волосы.

Просмотрел заголовки ответа сервера - картинки отдаёт не апач, а ngnix. Видимо, хостер настроил это для уменьшения нагрузки на вэбсервер - статику отдаёт другой демон.

Всем спасибо.


Часовой пояс GMT +4, время: 11:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.