Перенаправил с помощью htaccess запросы:
RewriteRule ^viewpost/([-a-zA-Z0-9_]+)/? viewpost.php?id=$1 [L]
Теперь хочу запретить доступ к файлу через: ./viewpost.php?id=1
т.е. оставить только: ./viewpost/1
Не работает.
RewriteRule ^viewpost\.php /403.html [R=301,L] - работает и результат: ./viewpost.php?id=1 -> ./403.html?id=1
Прошу прощения, я не силен в этом синтаксисе.
Хорошее направление подсказал Владлен Ultra. Сделайте единую точку входа в приложение index.php и дальше работайте с REQUEST_URI. Так будет и правильно и безопасно и красиво :)