RewriteCond ... -U

  • Автор темы DmitriyF
  • Дата начала

DmitriyF

Guest
RewriteCond ... -U

Что-то не понимаю, что делает RewriteCond ... -U

Мне нужно, чтобы существующие файлы сервер отдавал, а вместо несуществующих вызывал обработчик. Взял пример практически из мануала:

RewriteEngine on

RewriteCond %{REQUEST_URI} !-U
RewriteRule ^(.+) /404.php [L]

RewriteRule ^(.+) $1 [L]


Пишем URL с белибердой, получаем в логах

RewriteCond URI (-U) check: path=/blablabla -> status=200
192.168.1.68

RewriteCond: input='/blablabla' pattern='!-U' => not-matched

- т.е. почему-то код 200, а паттерн говорит, что такой файл есть. Наверное, это связано с какими-то рекурсивными обработками? Как написать правильно?
 

slach

Новичок
используй
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-f

-U - это existing URL via subrequest совершенно не правильно
статус 200 будет отдаваться всегда
потому что у тебя зацикливается ... сабреквест получает правильный ответ
 

DmitriyF

Guest
Пробовал - отдается ошибка 500 Internal Server Error

При этом
RewriteCond: input='/404.php' pattern='!-f' => matched
Однако файл есть!
 
Сверху