Asp.Net MVC roteamento: melhor maneira de ter um único elemento na URL?

votos
1

Vou pegar o exemplo do site do SO. Para ir para a lista de perguntas, o url é www.stackoverflow.com/questions. Por trás da cena, isso vai para um controlador (cujo nome é desconhecido) e uma de suas ações. Vamos dizer que este é controller = casa e action = perguntas .

Como evitar que o usuário digite www.stackoverflow.com/ casa / perguntas que levam à mesma página e reduziria o ranking da página, tanto quanto SEO está em causa. Leva um redirecionamento para resolver isso? Será que tomar algumas regras de encaminhamento especiais para lidar com este tipo de situação? Algo mais?

obrigado

Publicado 10/12/2008 em 03:21
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

I assumido que o controlador foi questionse a acção foi index, isto é, a acção padrão, tal como definido pelo manipulador de rota. Assim, não há um caminho alternativo para a página.

Respondeu 10/12/2008 em 03:24
fonte usuário

votos
1

Durante a apresentação de Phil Haack do PDC , Jeff mostra parte do código fonte para Stack Overflow. Entre as coisas que ele mostra é o código para algumas das rotas inscrições. Ele tem estes nos controladores, e não é claro para mim que ele usa uma rota padrão em tudo. Sem rota padrão, você não precisa se preocupar em / home / perguntas, por exemplo.

Quanto / perguntas / index, sim, um redirecionamento permanente é o caminho a percorrer. Você não terá qualquer penalidade motor de busca de um redirecionamento permanente.

Outra maneira de eliminar / home / perguntas seria usar uma restrição de rota.

Respondeu 10/12/2008 em 15:32
fonte usuário

votos
1

Você quer usar a seguinte rota. É muito fácil você acabou de criar uma nova rota que elimina a necessidade do controlador estar na rota. Você cria um modelo de cadeia que contém apenas a ação e você padrão do controlador para o controlador que deseja utilizar, como "Home".

routes.MapRoute(
    "MyRoute",
    "{action}",
    new { controller = "Home", action = (string)null },
    new { action = "[a-zA-z_]+" }
);

Espero que isto ajude.

Respondeu 10/12/2008 em 15:38
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more