Тогда осталось дополнить проверкой что запрошенный адрес не является папкой
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* /404.php [L]
Вообще странно что RewriteCond %{REQUEST_FILENAME} !-f срабатывает для существующих файлов.
Тогда можно попробытвать составить правила относительно %{DOCUMENT_ROOT}
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule .* /404.php [L]
или так
RewriteCond %{THE_REQUEST} \ (\S+) RewriteCond %{DOCUMENT_ROOT}%1 !-f RewriteRule .* 404.php [L]
А вообще файл 404.php существует и доступен. Какой код возвращается при обращении напрямую к адресу /404.php
Если нужно для несуществующих страниц отображать содержимое /deleted.html и отдавать вместо 404 код 200, то помогут такие правила
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule \.html$ /deleted.html [L]
Ставить в самом верху сразу после RewriteEngine On
Указать собственную страницу для ошибки 404 можно так
ErrorDocument 404 /deleted.html
Можете показать содержимое .htaccess?
По запросу проверка заголовков http находится полно онлайн сервисов, например http://www.bertal.ru/
Проверять User-Agent
RewriteCond %{HTTP_USER_AGENT} YandexRewriteRule ^redirect - [L,F]
Ставить в самое начало файла сразу после RewriteEngine On
Похожий эффект с помощью фильтров можно получить в ffmpeg http://ffmpeg.zeranoe.com/builds/
Сначала фильтром pad добавляем сверху и снизу по 10 пикселей и заливаем их белым цветом, потом применяем фильтр perspective.
ffplay -vf pad=iw:ih+20:0:10:white,perspective=0:0:W:-200:0:H:W:H+200 movie.avi
RewriteRule ^component/jdownloads/viewdownload/ http://site.com/ [R=301,L]
Ставить в самом начале файла сразу после RewriteEngine On