Usando mod_rewrite podrías usar algo como esto:
Código:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !=http://sitio.com/index.php
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^.*$ - [F]
No obstante, eso va a dar problemas si el agente de usuario no envía la cabecera HTTP_REFERER.