Use o mod_rewrite para forçar os usuários a acessar a homepage ao entrar em um site?

2

É possível usar o mod_rewrite para forçar todos os usuários a entrar em um site (seja através de um link de outro site, ou digitando um URL na barra de endereços) a ser redirecionado para a página inicial? Na página inicial (ou em qualquer página do site), os usuários devem poder acessar outras páginas do site. Mas todos os usuários seriam forçados a entrar no site através da página inicial. Isso pode ser feito com mod_rewrite (ou sem usar uma linguagem de script)?

    
por scotru 06.06.2012 / 10:42

2 respostas

4

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.

    
por 06.06.2012 / 10:56
1

Você poderia usar o PHP:

Primeiro, vem a minha mente é o uso de "$ _SERVER ['HTTP_REFERER']" no entanto, isso pode ser desativado pelo usuário no lado do cliente, se isso é mostrado ou não, tanto quanto eu estou preocupado, por favor Corrija-me se eu estiver enganado. Então você poderia fazer algo como Pseudo-código:

if $myDomain is part of $_SERVER['HTTP_REFERER'] then
redirect
else
do nothing

Como as pessoas podem mudar isso, você pode introduzir uma variável de sessão no PHP. Pseudo-código:

if empty( $_SESSION['newvisitor'] ) && !isset($_SESSION['newvisitor']) 
{
    $_SESSION['newvisitor'] = true;
}
else
{
   $_SESSION['newvisitor'] = false
}

if ( $_SESSION['newvisitor'] )
{
    #redirect to home
}

Então, basicamente, o script verifica no início se a variável está definida, se não estiver definida, deve ser novo visitante, portanto, ele deve redirecionar para a página inicial. Se isso for realmente definido, não deverá redirecionar.

EDIT: Reconhecida, a minha primeira solução estava errada, uma vez que não poderia corresponder se ele realmente veio de uma subpágina.

    
por 06.06.2012 / 11:03