Fazer um Redirect 301 utilizando Spring MVC

Para quem gosta de SEO e tem uma preocupação com a indexação das suas páginas no google e pretende mudar uma url, vou mostrar como fazer um redirect 301 corretamente no spring MVC

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - SEO - TUTORIAL

Última atualização em: | 4282 Visualizações

Neste Post vou mostrar como fazer um redirecionamento 301 corretamente utilizando Spring MVC e por que fazer isso de maneira correta é importante para seu web site.

O problema de mudar uma URL

Suponhamos que você tenha um web site ou blog e quer fazer uma simples mudança de url para manter uma melhor organização das suas páginas. A principio bastaria mudar o caminho e pronto! Mas no google e em outros mecanismos de busca podem levar um tempo até reindexar seu site e apontar para a url correta causando vários erros de página não encontrada.

Então você tem 2 caminhos:

O primeiro é deixar que gere erros 404 e perder alguns acessos até que a situação se resolva ou manter as duas URL's retornando para a mesma página.

Para quem conheçe de SEO sabe que ter duas páginas sendo mostrada a partir de dois caminhos pode ser prejudicial para SEO certo?

Então vou mostrar uma alternativa a este problema de maneira muito simples.

Utilizando redirecionamento 301 com Spring MVC

A alternativa mais apropriada é utilizar um redirect 301 da página antiga para a nova página isso vai mostrar para os mecanismos de busca que existe uma nova página e vai encaminhar os usuários que acessarem a antigo para a página correta, dessa forma fazer este redirecionamento pode ser uma boa alternativa.

Vamos ver o controller:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.servlet.http.HttpServletResponse;

@Controller
public class SampleRedirectController {


    @GetMapping("/sample/artigo-name")
    public String mostraArtigo() {
        return "artigo";
    }
		
		// [...]

O código acima deve apontar para uma nova página, no lugar do padrão /sample/artigo-nome queremos chamar de /post/artigo-nome para isso vamos fazer uma modificação no código, veja:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.servlet.http.HttpServletResponse;

@Controller
public class SampleRedirectController {

    @GetMapping("/sample/artigo-name")
    public void mostraArtigoRedirect(HttpServletResponse response) {
        send301Redirect(response, "http://<meu-dominio>/post/artigo-nome");
    }

    @GetMapping("/post/artigo-name")
    public String mostraPost() {
        return "artigo";
    }

    public void send301Redirect(HttpServletResponse response, String newUrl) {
        response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
        response.setHeader("Location", newUrl);
        response.setHeader("Connection", "close");
    }
}
Explicando o código

Primeiro criamos um método send301Redirect que recebe como parâmetro o HTTPServletResponse e a nova URL para o redirecionamento.

No método antigo, não retornamos a página mas sim utilizamos este método para retornar ao cliente que o chamou um redirecionamento com o status 301 (HttpServletResponse.SC_MOVED_PERMANENTLY) o que fará o cliente ser lançado para a nova página.

Por fim, criamos o novo método que será responsável por tratar as requisições para a nova tela, evitando que as requisições que chegarem na URL antiga sejam tratadas pelo novo método sem mostrar erro 404 ao cliente e sem manter dois retornos para a mesma página.

Ficou com dúvidas, deixe sua dúvida nos comentários para que possamos debater.


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!