Redirect Web em Apache

  1. Diretiva "Refresh"


    A diretiva refresh, utiliza a própria linguagem html para informa ao navegador que deve atualizar a página com a nova URL especificada em no parâmetro URL.

    E este encaminha uma única página e não todo o domínio. Pode ser configurado para encaminhar a página inicial padrão para o domínio dando a impressão de encaminhamento do domínio.

    A diretiva refresh é uma meta informação passada na página HTML, que deve ser posicionada no elemento head.
    < META HTTP-EQUIV="Refresh" Content="0; URL=http://www.perfumes.incolume.com.br/files/ " > 
    


    Pode-se também apresentar uma mensagem para os usuários da página, como no trecho abaixo.
    <html>
    <head>
    <META HTTP-EQUIV="Refresh" Content="3; URL=http://www.perfumes.incolume.com.br/files/">
    </head>
    <body>
    Esta página será redirecionada para http://www.perfumes.incolume.com.br/files/ em 3 segundos.
    <p>
    Por favor atualize seus links.
    </p>
    </body>
    </html>
    

  2. mod_cgi


    O mod_cgi é habilitado na diretiva ScriptAlias, no arquivos de configuração do apache, geralmente httpd.conf
    ScriptAlias / /var/www/cgi-bin/redirect-script/
    

    Os scripts do mod_cgi podem ser em diversas linguagens, C, perl, bash, sh, php, python, abaixo alguns exemplos:

    Perl
    #!/usr/bin/perl
    print "Status: 301 Moved\r\n" .
    "Location: http://www.new-domain.com/\r\n" .
    "\r\n";

    #!/usr/bin/perl -w
    use strict;
    use CGI qw/:standard/;
    print redirect('http://www.new-domain.com');

    PHP
    <?php
    header("Location: http://www.new-domain.com/");
    ?>

    JavaScript
    <html>
    <head>
    <script language="Javascript" type="text/javascript">
    <!-- Hide script
    //<![CDATA[
    window.location.href="http://www.new-domain.com/"
    //]]> End script hiding -->
    </script>
    </head>
    </html>


    <html>
    <head>
    <script type="application/x-javascript">
    <!--
    document.location="http://intra"
    -->
    </script>
    </head>
    </html>


    <html>
    <meta http-equiv=refresh content="0; URL=http://www.presidencia.gov.br" />
    </html>

  3. modulo mod_rewrite

    O mod_rewrite é habilitado na diretiva mod_rewrite, no arquivos de configuração do apache, geralmente httpd.conf.
    RewriteEngine On
    RewriteRule /.* http://www.new-domain.com/ [R]


    RewriteEngine On
    # use RewriteLog to debug problems with your rewrite rules
    # disable it after you found the error our your harddisk will be filled *very fast*
    # RewriteLog "/var/log/apache2/rewrite_log"
    # RewriteLogLevel 2
    RewriteRule ^/icons/ - [L]

    # Bloqueia requisições HTTP indesejadas
    RewriteCond %{REQUEST_METHOD} !=GET
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteRule . / [F,L]
    # Bloqueia autenticacoes
    RewriteCond %{HTTP:Authorization} Basic [OR]
    RewriteCond %{HTTP:Cookie} _ac
    RewriteRule . /404

    #Bloqueia todas URLs que possuem /manage
    RewriteCond %{REQUEST_URI} ^/(.*)manage$
    RewriteRule . / [F,L]

    #Bloqueia todas URLs que possuem /manage
    RewriteCond %{REQUEST_URI} ^/(.*)manage_main$
    RewriteRule . / [F,L]

    #Bloqueia todas URLs que possuem /join_form
    RewriteCond %{REQUEST_URI} ^/(.*)join_form$
    RewriteRule . / [F,L]

    #Bloqueia todas URLs que possuem /login_form
    RewriteCond %{REQUEST_URI} login_form(.*)$
    RewriteRule . / [F,L]

    #Bloqueia todas URLs que possuem /plone_control_panel
    RewriteCond %{REQUEST_URI} ^/(.*)plone_control_panel$
    RewriteRule . / [F,L]

    #Bloqueia todas URLs que possuem /member_search_results
    RewriteCond %{REQUEST_URI} ^/(.*)member_search_results
    RewriteRule . / [F,L]

    #Bloqueia todas URLs que possuem /prefs_users_overview
    RewriteCond %{REQUEST_URI} ^/(.*)prefs_users_overview
    RewriteRule . / [F,L]

    # rewrite any access to manage to a secure server
    # RewriteRule ^/(.*)/manage(.*) \
    # https://secure.example.org/zope/example_instance/example_org/$1/manage$2 [NC,R=301,L]
    # RewriteRule ^/manage(.*) \
    # https://secure.example.org/zope/example_instance/example_org/manage$1 [NC,R=301,L]

    # rewrite any other access to the zope server using a proxy [P] and add the VMH magic keywords
    # use %{SERVER_NAME} instead of example.com to avoid busting the ServerAlias
    # %{HTTP_HOST} is bad because it may contain the port

    #RewriteRule ^/projetoergonomia(.*) http://10.100.0.82/projetoergonomia/$1 [L,P]
    #RewriteRule ^/intra(.*) http://intra.incolume.com.br/$1 [L,R=302]

    RewriteCond %{HTTP_HOST} ^www\.incolume\.com\.br$
    #-- dominio RewriteRule ^/perfumes(.*) http://10.100.0.82/perfumes/$1 [L,P]
    RewriteRule ^/eventos/conferencia$ /eventos/conferencia/ [L,R=301]
    RewriteRule ^/eventos/conferencia/(.*) http://10.100.0.82/eventos/conferencia/$1 [L,P]
    #--https-- RewriteRule ^/loja(.*) http://10.100.0.82/loja/$1 [L,P]
    RewriteRule ^/loja$ /loja/ [L,R=301]
    ###RewriteRule ^/projetoergonomia(.*) http://10.100.0.82/projetoergonomia/$1 [L,P]
    RewriteRule ^/blog/brito(.*) http://10.100.0.82/blog/brito/$1 [L,P]


  4. modulo mod_alias

    O mod_alias é habilitado na diretiva mod_alias, no arquivos de configuração do apache, geralmente httpd.conf.

    Redirecionamento Temporário de Domínio:
    Redirect / http://www.new-domain.com/

    Redirecionamento Temporário de domínio com Expressão Regular (ER/RE):
    RedirectMatch ^/$ http://www.new-domain.com/
    RedirectMatch ^/(.*)$ http://www.new-domain.com/$1

    Redirecionamento permanente:
    Redirect permanent / http://www.new-domain.com/

    Redirecionamento Permanente de domínio com Expressão Regular (ER/RE):
    RedirectMatch permanent ^/$ http://www.new-domain.com/
    RedirectMatch permanent ^/(.*)$ http://www.new-domain.com/$1

    Redirecionamento de conteúdo:
    Redirect /web-page.html http://www.new-domain.com/destination-web-page.html

    Redirecionamento de conteúdo com Expressão Regular (ER/RE):
    Redirect ^/web-page http://www.new-domain.com/destination-web-page.html
    Redirect ^/web-page.html$ http://www.new-domain.com/destination-web-page.html

    Redirecionamento Temporário com RE, para o mesmo URI remoto:
    RedirectMatch ^/html/(.*)$ https://www.new-domain.com/html/$1

    RedirectMatch ^/webalizer/(.*)$ https://www.new-domain.com/webalizer/$1




    As diretivas de Redirect tem precedencia sobre as diretivas Alias e ScriptAlias.

    Outras opções de "Redirect" incluem: temp (error 302), padrão, que determina status de redirecionamento temporário.

  5. HTTP 1.1 Redirect códigos

    HTTP
    Código
    Estado Descrição
    301 permanente O recurso foi movido permanentemente
    302 temporário O recurso foi movido temporariamente
    303 seeother O recurso foi substituído e referem-se a novo recurso
    305 UseProxy Use proxy para acessar o site
    307 Temp O recurso foi movido temporariamente
    410 Tegone O recurso foi removido permanentemente

Referências

http://www.yolinux.com/TUTORIALS/ApacheRedirect.html http://tools.ietf.org/html/rfc2616 http://httpd.apache.org/docs/2.2/mod/mod_alias.html http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html http://httpd.apache.org/docs/2.2/mod/mod_cgi.html

Atualizações

14/11/2011; 16/11/2011; 05/12/2012;

Sequência

Redirect Web em Apache(parte 2)

Comentários