Добавить перед вашей преобразующей строки
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^([a-zA-Z0-9_-]+\.html)$ /$1? [R=301,L]
Kievpereklad, вы видимо не понимаете как работает редирект. Клиент запрашивает урл, сервер возвращает ответ, что этот урл перемещен на новый адрес. Наличие такой страницы на сайте не обязательно. Вы можете делать там что хотите, страницы все равно будут не доступны, так как по этому адресу будет происходить перенаправление на другой.
Добавить поле RewriteBase / и будут работать.
Вот уж извращение
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Там автор предлагает вместо роботс-а юзать метатег роботс. Почитайте, чем он это решение мотивирует, если вас это устраивает и вам не лень будет лезть в исходниках - юзайте.
Никто вас в заблуждение не вводил. Вы же сами плакались что, дубли страниц / и /index.html. Вам предложили решение, закрыть index.html к индексации.
Ну пишите регулярными выражениями, пример у вас есть перед глазами
cafename=[^&]+&papram=([^&]+)
По второму непонятно, а насчет первого это редирект с ввв или на ввв. Примеры редиректа полно.
А что мешает добавить и index.html?
Пропишите запреты в роботсе и не парьтесь. "Дубли главной страницы", у вас главная страницы в файлах должна быть прописана тогда как /. Про /contacts.php боту вообще не откуда быть известно.