Claro, com algumas possíveis desvantagens. A versão simples é assim:
RewriteCond %{HTTP_REFERER} !example.com
RewriteRule ^/. / [R]
Isso verifica se o referenciador não contém seu nome de domínio e, em seguida, para qualquer URI que tenha algo após a primeira barra (ou seja, qualquer página que não seja a home page) envia um redirecionamento para a página inicial.
Isso interromperá completamente seu site para qualquer usuário que não enviar referenciadores ou modificar os referenciadores. Por exemplo, alguns aplicativos de privacidade alteram os referenciadores para http://xxxxxxxxxxxxxxxxxxxxxxx
, em que o número de x
s corresponde ao comprimento do referenciador verdadeiro original.
Se você enviar um e-mail com uma imagem com hiperlink do seu site, a regra acima também quebrará isso.
Também é uma má usabilidade para os visitantes que clicam em um link para uma página específica de outro site (como o Google). Eles são redirecionados para a home page e não têm idéia de como voltar para a página em que estavam. É provável que esses visitantes acessem o botão "Voltar" e escolham um resultado de pesquisa diferente. Você pode melhorar um pouco alterando a regra de reescrita.
RewriteCond %{HTTP_REFERER} !example.com
RewriteRule ^(/.+) /?prev=$1 [R]
Você pode usar seu aplicativo na página inicial para fornecer um link para a página em que estava. Você também pode definir cookies com mod_rewrite para que ?prev=$1
possa existir dentro de um cookie.
Existem provavelmente outras desvantagens de usabilidade que eu não previ. Você deve ficar de olho em seus visitantes, se você implementar isso.
Eu só pensei em outra desvantagem: Bots raramente enviam referenciadores. Se você implementar isso como está escrito e não manter uma lista completa de bots desejáveis (User-Agents e / ou IPs) e desativá-lo para eles, seu site não poderá ser rastreado pelos robôs do mecanismo de pesquisa.