Так антилич, запрет хотлинкинга для этого и придуманы. Конечно от растаскивания они не спасут, просто сделает невозможным публиковать ссылки на чужих сайтов на изображения со своего хостинга.
ПС. Топик не читал.
А вы случайно не из кеша браузера сохраняете?
Какбэ если код правильно настроили, то вы не как не могли скачать даже и по "сохранить"
Тот который подходит для вашего случая.
ТС, можете попробовать (выбрать один вариант)
для страницы ошибки
RewriteEngine On
RewriteCond %{QUERY_STRING} !^name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+$
RewriteCond %{QUERY_STRING} !^name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+&pid=\d+$
RewriteRule ^index\.php 404.html [G,L]
для редиректа
RewriteCond %{QUERY_STRING} ^(name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+&pid=\d+).
RewriteRule ^index\.php /index.php?%1 [R=301,L]
RewriteCond %{QUERY_STRING} ^(name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+).
Это стандартный синтаксис PCRE который используется и в php.
В примере на самом деле редиректится не на главной а на "правильный" урл.
Синтаксис неправильный, но страницу ошибки надо не редиректить, а реврайтить.
Это убрать
После RewriteBase добавить
RewriteRule ^staroe1/staroe2/ /novoe1/novoe2/ [R=301,L]
Нет, к сожалению именно такие вещи в htaccess не настраиваются. Для htaccess есть файл index.php, он рабочий, остальные параметры которые ему передаются его не волнуют. Вы должны у себя в скрипте настроить правильную обработку всех входящих переменных и выдавать соответствующие заголовки. Как вариант, можно через мод_реврайт проверить входящие переменные, и если они не соответствует шаблону закрыть закрыть доступ или сделать редирект на верный вариант, что-то примерно по вашему случаю
RewriteCond %{QUERY_STRING} ^(name=[&]+&op=cat)[.]
RewriteRule ^(index\.php) /$1?%1 [R=301,L]
cat естественно заменить на имена ваших категорий, или смотря что у вас там
Вам выше дали ответ по поводу ваших проблем.
RewriteRule ^([^/]+)/(подраздел1|подраздел2|подразделN).html /$1.html [R=301,L]
RewriteRule ^([^/]+)/(подраздел1|подраздел2|подразделN)/(.+) /$1/$3 [R=301,L]
htaccess не может телепатически определять какие страницы у вас существуют при динамическом генерирования а какие нет. Вы можете только задать конкретные параметры по которым может открываться страницы. А еще лучше делать нормальную проверку у себя в скрипте.