RewriteRule ^/cat_ap~nid~(.*)\.htm$ /cat_ap?nid=$1 [R]
[R]
в конце не является обязательным. Если вы его опустите, Apache не будет перенаправлять ваших пользователей (он все равно будет отображать правильную страницу).
Если часть nid
также является переменной, вы можете попробовать это:
RewriteRule ^/cat_ap~([^~]+)~(.*)\.htm$ /cat_ap?$1=$2 [R]
РЕДАКТИРОВАТЬ: Как сказал Бен Бланк в своем комментарии, вы можете захотеть ограничить набор действительных URL-адресов. Например, вы можете убедиться, что nid существует и что он числовой:
RewriteRule ^/cat_ap~nid~([0-9]+)\.htm$ /cat_ap?nid=$1
или если nid-часть является переменной, то она состоит только из буквенных символов:
RewriteRule ^/cat_ap~([A-Za-z]+)~([0-9]+)\.htm$ /cat_ap?$1=$2