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
Última atualização em: | 4416 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.