Pergunta

Atualmente eu estou tentando remover .aspx extensões de sitecore URL.Um blog sugere que a mudança seria o seguinte corrigir este problema:

<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="true"

O problema é que isso não funciona para todos os códigos em nossos sites como alguns controles personalizados forçar o uso de .aspx.

O que eu estava pensando é que, se eu posso entrar no pipeline antes de uma resposta é enviada de volta para o usuário poderia mudar a URL para um que é mais SEO amigável (não .aspx), eu estou tentando fazer isso usando o seguinte código

public class CustomExecuteRequest : Sitecore.Pipelines.HttpRequest.ExecuteRequest
{
    protected override void PerformRedirect(string url)
    {
        base.PerformRedirect(url.Replace(".aspx" , ""));
    }

    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        PerformRedirect(args.Url.FilePathWithQueryString.Replace(".aspx", ""));

        //args.Url.FilePathWithQueryString = args.Url.FilePathWithQueryString.Replace(".aspx", "");

        //base.Process(args);
    }
}

O código está a ser atingido e esta solução funciona, no entanto, ele está realizando um redirecionamento que é realmente o que eu quero fazer, eu gostaria de, ao invés de ter apenas uma regulares pedido com o URL limpas.O problema é que a variável args tem um campo somente leitura (comentada a seguir), que é usado para criar o URL.

Alguém tem alguma idéia de como eu posso mudar a URL aqui, ou talvez em algum outro lugar no pipeline?

Foi útil?

Solução

O que você está fazendo dentro do HttpRequestPipeline certamente NÃO é a forma correcta de alterar os links.Como com qualquer aplicação web, todos os links na página são retornados para o cliente, como o conteúdo da solicitação HTTP.Redirecionando durante o pedido não vai alterar o conteúdo apresentado.

A única maneira de fazer isso é a maneira mais difícil:

  • Encontrar todos os lugares em sua fonte de geração de links que contém .aspx.Uma pesquisa de "aspx" dentro da solução pode ajudar
  • Encontrar todas as referências a UrlOptions e LinkManager e verificar se AddAspxExtension=true é definida manualmente como urlOptions.

Algo como isso seria sempre produzir um .aspx, terminando por exemplo:

var urlOptions = UrlOptions.DefaultOptions;
urlOptions.AddAspxExtension = true;

LinkManager.GetItemUrl(item, urlOptions);

Outras dicas

A maneira mais difícil de mudar todos os seus links usar o link manager ou se você estiver precisando de tempo, então, sugerir algo que talvez fora de sitecore e usar o IIS iis módulo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top