RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^id=(\d+)$
RewriteRule ^article\.php$ /%1? [R=301,L]
RewriteRule ^(\d+)$ /article.php?id=$1 [L]
должно работать
Какие ссылки "индексировались" если вы все закрыли от индексации? Что за логика, закрыть весь сайт, чтобы сайт индексировался через карту сайта. Если не хотите, чтобы бот лазил по всем ненужным страницам запретите конкретно их, либо откройте нужные для индексации, например только страницы новостей Allow: /index.php?newsid= карта сайта и чего-то там еще, а все остальное запретите Disallow: /
Имхо, с этого надо было начинать с самого начало.
Еще как вариант
RewriteRule ^catalog/([^/]+/)*(\w+)\.html index.php?B=product&id=$2 [L]
Такие регулярные выражения лучше не юзать, потому что они ничего конкретного не обозначают, и под них многое что может попасть.
Тогда я ничего не понял, слишком много "я делаю так и не работает, я делают эдак и тоже не работает, а сделать так то не работает то, как сделать чтобы работало так". Напишите конкретные адреса которые нужно реврайтнуть и для которых нужно сделать редирект. И желательно предоставить пару примеров реальных адресов которые используются на сайте.
Зачем вам без слеша? Имхо, лучше оставьте с ним. Но по идее должно было сработать.
Весь блок будет выглядеть примерно так
#редирект /article.php => /pisanina
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^articles\.php$ /pisanina? [R=301,L]
#редирект /article.php?page=1 => /pisanina/page/1/
RewriteCond %{QUERY_STRING} ^page=(\d+)
RewriteRule ^articles\.php$ /pisanina/page/%1/? [R=301,L]
#реврайты
RewriteRule ^pisanina$ /articles.php [L]
RewriteRule ^pisanina/page/(\d+)/$ /articles.php?page=$1 [L]
Кстати, проверьте имя файла, а то у вас не понятно, то ли это article.php то ли articles.php
..............
1) Редирект будет только со скрипта, который носит имя ^page\.php$, даже если и другие скрипты otherscripts.php юзают одноименные параметры.
2) Правильно, фактически адрес со слешем и без это две разные страницы. И незачем по двум адресам чтобы открывалась одна и та же страница. В данном случае отдается ошибка 404, что в принципе достаточно. Хотите редирект - ставьте редирект.
RewriteRule ^page\.php$ /%1/? [R=301,L]
RewriteRule ^page\.php$ /%1/ [R=301,L]
добавить перед!
RewriteRule ^([^/]*)/$ /page.php?id=$1 [L]
Прямые ссылки в вконтакте привязаны к IP-адресу. Прикрутить можно разве что так