Вы действительно имеете в виду, что когда пользователи переходят на второй URL, он будет переписан на первый? Это можно сделать с помощью
RewriteRule /blog/.+-(\d+)$ /blog/?pid=$1
Если вы хотите отправить 301 переадресацию со старых URL-адресов на новые, вы не сможете сделать это с помощью файла .htaccess. Причина в том, что Apache mod_rewrite не имеет доступа к заголовку вашего сообщения, поэтому он не будет знать, какой заголовок вставить в URL. Вы должны будете сделать это перенаправление с PHP.
РЕДАКТИРОВАТЬ : знаете, на самом деле это не совсем так. С помощью директивы RewriteMap
вы можете делать довольно сумасшедшие вещи, например, инструктировать Apache, чтобы он запросил произвольную программу для выполнения перезаписи, и таким образом вы могли бы иметь, скажем PHP-скрипт, который выполняет некоторую работу с базой данных, чтобы выяснить, что такое заголовок, и переписывает URL-адрес, исходя из этого. Но это кажется слишком сложным решением, и я бы не советовал его делать - гораздо проще и проще отправлять перенаправление напрямую из PHP.