Tak. Sprawdzasz tzw referer
, czyli adres z którego została otworzona Twoja strona.
ALE. Przeglądarka nie ma obowiązku tego wysyłać. Sporo firewalli powoduje wycięcie tego adresu. Są też różne skrypty do przeglądarek mające na celu wyłączenie referali.
W PHP do referali dostaniesz się poprzez: $ SERVER["HTTP REFERER"]. Jeżeli jest pusty - rób co uważasz. Np:
if (!$_SERVER['HTTP_REFERER']) { header('Location: http://twojadomena.pl/'); die(); } // przekierowanie na główną stronę
W htaccess:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .* - [F,L]
# wyświetli 403 Forbidden
Możesz też dodać w kodzie HTML mały skrypt javascript (nie zadziała na użytkownikach bez javascriptu):
<script type="text/javascript">
if (self.location.href==top.location.href) { top.location.href="/"; } // przekierowanie na główną
</script>
edit: w kodzie js przedtem był błąd. działało odwrotnie niż chcieliśmy